webForumDet fria alternativet

Hjälp med optimering av SQL?

1 svar · 231 visningar · startad av Mungo

MungoMedlem sedan jan. 2000372 inlägg
#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!

MungoMedlem 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.

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)