23. maj 2011 - 19:53Der er
15 kommentarer og 1 løsning
Brug af index i to forskellige tabeller
Jeg har en query:
SELECT threadid, title, text, userid, datetime, user.username, age, oprettet, access, sex, public, postcount FROM forumpost, user WHERE user.id = userid AND threadid = 43683 ORDER BY datetime ASC
Det er fra mit forum, hvor jeg både henter tråden samt oplysninger fra brugerne som har postet i tråden.
Men ved brug af explain får jeg følgende oplysninger: forumpost, rows: 81 user, rows: 1 Dvs. en join size på 81 i alt.
Men ved brug af jet profiler for mysql får denne sql følgende stempel: join size 81 (fair) 2 røde prikker using filesort (bad)
Jeg kan ikke se, at ovenstående kan optimeres yderligere? Jeg har mange sql-statements der rangeres som bad og very bad, er dette normalt?
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
SELECT threadid, title, text, userid, datetime, user.username, age, oprettet, access, sex, public, postcount FROM forumpost, user WHERE user.id = userid AND threadid = 43683 ORDER BY datetime ASC
Man kan lave sådan nogle sammensatte indexeringer (kender ikke den korrekte faglige term) - jeg går ud fra, at det er det korrekte at bruge i stedet for at indexere enkeltvis?
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.