Hjälp med optimering av SQL?

Databaser & SQL

1 svar · 243 visningar · startad av Mungo

Medlem sedan jan. 2000372 inlägg
Trådstart#1

Jag listar inläggen i mitt forum med följande SQL-sats:

SELECT ft.id, ft.adminOnly, ft.tsCreated, DATE_FORMAT(ft.tsCreated, '%H:%i, %a %e/%c') AS datum, 
ft.name, ft.clientID, ft.projectID, ft.forumID, ft.creatorID,  ft.tsChild, 
u.firstname, u.lastname, ft.filesize, ft.active, 
COUNT(ft3.id) AS antal, SUM(ft3.filesize) AS childfilesize 

FROM extra_forumthreads ft, extra_users u
LEFT JOIN extra_forumthreads ft3 ON ft3.parentID = ft.id 

WHERE ft.parentID = 0 AND ft.clientID = 0 AND ft.projectID = 28 AND ft.forumID = 0 
AND ft.active = 1 AND u.id = ft.creatorID
GROUP BY ft.id ORDER BY ft.name

Problemet är att även fast det bara finns ungefär 10 poster som hämtas av denna sats tar det 0,16 sekunder, vilket är lite långt eftersom jag hämtar ungefär 100 forum på detta sätt på en sida. Och ju fler jag lägger in, desto längre tid tar det förstås.

Det som verkar "knäcka" mySQL är själva LEFT JOIN där jag gör lite COUNT() och SUM(), så min fråga är om nån har ett smartare sätt att göra den här frågan på - all hjälp emottages tacksammast!

Medlem sedan jan. 2000372 inlägg
#2

Testade lite mer och efter att jag lagt in ett index för "parentID" i extra_forumthreads fick jag ner query-tiden till 0.06, dvs nästan 300% snabbare. Inte illa.

257 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)