Jump to content
php.lv forumi

query optimizācija


ray

Recommended Posts

Varbūt kāds db speciālists var palīdzēt opimizēt / izveidot šādu vaicājumu:

 

SELECT

*, id n_id,

(

SELECT

file

FROM

_pictures p

WHERE

p.parent_id = n_id

ORDER BY

p.id ASC

LIMIT 1

)

first ,

(

SELECT

file

FROM

_pictures p

WHERE

p.parent_id = n_id AND p.id = picture_id

ORDER BY

p.id ASC

LIMIT 1

)

picture

 

FROM _news WHERE active = 1 ORDER BY id DESC

 

tabulas:

 

[_news]

- id

- title

- text

- picture_id

- active

 

[_pictures]

-id

- file

- parent_id

 

Tas rezultāts, kas jāpanāk ir jāatlasa no bilžu tabulas izvēlētē jaunuma default bilde (picture_id) vai pirmā pēc secības, ja tajā tabulā tāda bilde nav vai picture_id = 0

 

Vaicājumi vienmēr bijusi man liela problēma, tāpēc varbūt kāda "gudrāka galva" var šajā lietā izlīdzēt

 

 

 

Edited by ray
Link to comment
Share on other sites

Nenodarbojies ar muļķībām, bet nodrošini, ka `news` tabulā vienmēr ir pareizs `picture_id`, bet tas ir 0 vai kā citādi tukšs tikai tad, kad rakstam nevienas bildes nav. Tas būs krietni labāk par kaut kādu sviestainu kveriju.

Link to comment
Share on other sites

Atvainojos, kļūda query. p.id = 1 nebija jābūt.

parent_id ir "_pictures" tabulā un norāda pie kuras ziņas bilde pieder.

 

Izlaboju pirmajā ierakstā "_pictures" tabulu un query

 

Kavacky:

diemžēl tā nevar izdarīt, jo lietotājam ir arī iespēja nenorādīt titulbildi (picture_id), tādā gadījumā jārādās pirmā bilde no galerijas (_pictures tabula)

Edited by ray
Link to comment
Share on other sites

Nu to vienu subselektu var pārrakstīt par JOINu, ja visi primary key ir kārtībā.

SELECT
   *, id n_id,
   (
  	 SELECT file FROM _pictures p
  	 WHERE    
  		 p.parent_id = n_id
  	 ORDER BY
  		 p.id ASC LIMIT 1
   ) first,
   p.file AS picture
FROM
   _news
LEFT JOIN _pictures p ON p.id = picture_id
WHERE
   active = 1
ORDER BY
   id DESC

Link to comment
Share on other sites

Kavacky:

diemžēl tā nevar izdarīt, jo lietotājam ir arī iespēja nenorādīt titulbildi (picture_id), tādā gadījumā jārādās pirmā bilde no galerijas (_pictures tabula)

Un kas īsti traucē, ja lietotājs ir norādījis nevienu bildi, tad atrast pirmo bildi galerijā un apdeitot `news`? Un, kad bildes pamaina, apdeitot atkal? Pie galerijas bildēm tad jānorāda, ka tas ir usera manuāli selektēts thumbnailis, lai nepārrakstītu kaut ko nepareizi, ja pamaina kādas bildes, bet ir jau manuāli uzstādītais thumbnailis.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...