Unika värden (ex. id, namn, datum) är bra att indexera.
Hej igen.
Gjorde en tråd för några dagar sen där jag skrev att mysql tar upp all processorkraft. Har nu hittat två frågor som jag tror är en väldigt stor bidragande orsak till detta. Skulle vara jätteschyst om ni som kan lite mer kunde komma med förslag på hur dessa ska byggas om och hur det ska indexeras.
Först är det denna, som hämtar ut information om en grupp. Fyra lag i varje grupp och i vissa turneringar är det 128 lag. Denna fråga kan alltså köras 32 gånger per sidomladdning på en av de sidor som visas allra oftast. Borde kanske kunna sätta första order by på gruppens id. Hm. Säg att den körs en gång per sida, då. Går den fortfarande att förbättra?
SELECT DISTINCT cuplag.id, cuplag.clanid, cuplag.groupwon, cuplag.groupdraw, cuplag.groupplusminus, cuplag.grouppoints, cuplag.id as cupida
FROM cuplag, cupgroup
WHERE cupgroup.cupid = "& rs("cupid") &" AND cupgroup.whatgroup = "& m &" AND (cupgroup.cuplag1 = cuplag.id OR cupgroup.cuplag2 = cuplag.id OR cupgroup.cuplag3 = cuplag.id OR cupgroup.cuplag4 = cuplag.id)
ORDER BY cuplag.grouppoints desc, cuplag.groupplusminus desc, cuplag.seed asc
Sen har vi denna som hämtar ut senaste aktivitet i forumet. Körs på varje sida.
select f1.thread_id, f1.thread_name, f1.thread_author_id, f1.thread_date, f1.thread_text, f2.thread_reply_id, f1.thread_locked, f1.thread_sticky, f1.thread_stickytext,
max(coalesce(f2.thread_date, f1.thread_date)) AS lastPostDate
from forum_threads f1 left outer join forum_threads f2
on f1.thread_id = f2.thread_reply_id
where f1.thread_reply_id = 0 and f1.thread_deleted = 0 and not f1.thread_adminforum = 1
group by f1.thread_id, f1.thread_name, f1.thread_author_id, f1.thread_text, f2.thread_reply_id, f1.thread_locked, f1.thread_sticky, f1.thread_stickytext
order by lastPostDate desc
limit 5
Finns det någon grundregel vid indexering? Indexera de fält som finns i WHERE?

