Avatar billede dj-hupi Nybegynder
08. november 2008 - 17:17 Der er 6 kommentarer og
1 løsning

Optimering af sql forspørgelser

Hejsa...

Jeg kunne godt tænke mig at vide hvad jeg kunne optimere på mine SQL forspørgelser...

Fx:
SELECT ft.id, u.username,
IF(ft.date>ft.updated,ft.date,ft.updated) as mydate, count(fp.id) as postcounts, ft.title,u.id as uid
FROM forum_threads ft, user u , forum_posts fp
WHERE ft.userid =u.id
AND ft.online = '1'
AND fp.threadid = ft.id
group by ft.id
ORDER by mydate DESC
LIMIT 20

Tabellerne:
user indeholder 1450 rows
forum_threads indeholder 25000 rows
forum_posts indeholder 2300 rows

Der er lavet index på forum_posts (id, threadid)

Hvilket jeg jo ikke synes er mange...

Den er rigtig langsom (2-3 sekunder før den kommer) - Jeg bruger forresten MySQLyog...

Hvordan kan jeg optimere mine forspørgelser bedre?
Avatar billede erikjacobsen Ekspert
08. november 2008 - 17:33 #1
Groft sagt skal du have index på alle felter, du bruger i din WHERE:
  WHERE ft.userid =u.id
  AND ft.online = '1'
  AND fp.threadid = ft.id
Det vil gøre det lidt billigere at lave din SELECT, men lidt dyrere at lave INSERTs etc.

Men det kræver en lidt større analyse for at se om du så får for mange eller for få.
Avatar billede jensgram Nybegynder
08. november 2008 - 17:50 #2
Undskyld jeg hijack'er, men kan WHERE-betingelserne indbyrdes rækkefølge have betydning? Altså: Vil der kunne opnås noget ved først at have de simple sammenligninger eller lignende?

Jeg spørger af ren interesse, da Erik kunne tænkes at vide en ting eller to derom :)

God weekend.
Avatar billede dj-hupi Nybegynder
08. november 2008 - 17:53 #3
Jens helt i orden lige nu lytter jeg også bare ...

Jeg prøver at lave index på dem...
Avatar billede erikjacobsen Ekspert
08. november 2008 - 18:32 #4
Rækkefølgen har ingen betydning, da forespørgslen altid skal gennem en optimeringsfase, hvor den bedste udregnings-rækkefølge beregnes.
Avatar billede dj-hupi Nybegynder
08. november 2008 - 22:34 #5
Jeg har nu indexeret alle de vigtigste felter (unikke som releateres til flere tabeller.)

Men jeg tror jeg har fundet ud af hvorfor serveren køre langsomt ... Hardware issue ...
Avatar billede jensgram Nybegynder
09. november 2008 - 11:55 #6
Erik > Takker.
Avatar billede dj-hupi Nybegynder
19. april 2009 - 15:11 #7
Lukker da det var et Hardware issue.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester