19. juli 2003 - 10:06Der er
17 kommentarer og 1 løsning
langsom udtræk
Jeg har konverteret min DB fra access til mySQL.
Når jeg kører nedenstående SQL så tager den omkring 30sek for at hente min data.
SELECT F.FORUM_ID, T.TOPIC_ID, T.T_SUBJECT, T.T_STATUS, T.T_LAST_POST, T.T_REPLIES FROM ((FORUM_FORUM F LEFT JOIN FORUM_TOPICS T ON F.FORUM_ID = T.FORUM_ID) LEFT JOIN FORUM_REPLY R ON T.TOPIC_ID = R.TOPIC_ID) WHERE (T_DATE > '20030619093422') AND (T.T_AUTHOR = 142 OR R.R_AUTHOR = 142) AND (T_STATUS < 2 OR R_STATUS < 2) AND F.F_TYPE = 0 ORDER BY T.T_LAST_POST DESC, T.TOPIC_ID DESC
Jeg har samme data i en access-db og når jeg udfører den der kører den betydelig hurtigere.
Kan nogen sige mig hvorfor og måske hvordan jeg kan fixe det?
Index gør at den ikke behøver skanne hele tabellen for at finde bestemte værdier.
Det er næppe alle indexene der vil blive brugt til den specifikke query, men det er svært på forhånd at sige, hvordan MySQL vil udføre queryen, så ved at sætte index på alle de relevante steder.
Det er ikke usædvaneligt at se en faktor 10-100 forbedring når man får sat de rigtige index på.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.