Jump to content
php.lv forumi

Lēns query


hoho

Recommended Posts

Datubāzē ir 50000 ieraksti, man vajag izvilkt visus datus un vairākus count:

 

SELECT t1.*, 
(SELECT COUNT(*)  FROM t2 WHERE t2.t1_id = t1.id аs а1),
(SELECT COUNT(*)  FROM t3 WHERE t3.t3_id = t1.id as a2),
(SELECT COUNT(*)  FROM t4 WHERE t4.t4_id = t1.id as a3)
FROM t1
GROUP BY t1.id
 
Bez count strādā ātri, ar count pat nevaru sagaidīt rezultātu, viss uzkārās. Indeksi ir salikti.
 
Kādas iz Count alternatīvas lai izvilkt rezultātu?
Link to comment
Share on other sites

"Indeksi ir salikti."

 

Ha! Kāpēc tu domā, ka viņi vispār strādā šajā gadījumā? Domā, ka nospiežot "Index" kolonnai, visi kvēriji maģiski sāks strādāt?

 

Uzraksti EXPLAIN .. pieprasījumu šim kvērijam un tad skaties, kur tiek izmantots, kur nē.

Link to comment
Share on other sites

Vai tad runa nav par rindām kā tādām, nevis kolonām katrā rindā.. nekur neredzu arī koda piemērā countcol(), bet nu kā jau teicu..tikai minējums.

Kā arī, vai tad SELECT * (select all from row) ir nepieciešams pie ierakstu skaitīšanas?  

Edited by Pieduriens
Link to comment
Share on other sites

Vai tad runa nav par rindām kā tādām, nevis kolonām katrā rindā.. nekur neredzu arī koda piemērā countcol(), bet nu kā jau teicu..tikai minējums.

Kā arī, vai tad SELECT * (select all from row) ir nepieciešams pie ierakstu skaitīšanas?  

Tu laikam linku nemaz nepavēri. :)

Link to comment
Share on other sites

  • 4 weeks later...

Ar MySQL man ir maza pieredze, bet pamatā ja jācīnas par perfomance DB tad jālieto JOIN nevis subquery. 

 

uff.. šķet nepareizi uzrakstiju :) ar pirmo reizi, kautkā bez reāliem datiem grūti rakstās, bet nu ideja ir tāda ka SQL optimizatorimem 

lielākoties patīk JOIN nevis subquery

 

 

SELECT t1, COUNT(DISTINCT t2.id), COUNT(DISTINCT t3.id), COUNT(DISTINCT t4.id)

FROM t1

LEFT  JOIN t2 ON  t2.t1_id = t1.id 

LEFT  JOIN t2 ON  t3.t3_id = t1.id 

LEFT  JOIN t2 ON  t4.t4_id = t1.id 

GROUP BY t1.id

 

 

ja pieņem ka t2.id etc.. ir primarais kejs.

Edited by spameris
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...