Avatar billede Lasse Novice
24. marts 2003 - 23:08 Der er 5 kommentarer og
1 løsning

Hastighed

Jeg har et spg. angaaende INNER JOINs

Jeg skal have lavet et udtraek fra en database. Dette indebaerer 6 tabeller. Jeg kommer saa pludselig til at taenke paa hvordan sql serveren laver udtraekkene.

Jeg har foelgende nu(et eksempel):

1)
SELECT * FROM tab1 a, tab2 b, tab3 c, tab4 d, tab5 e where a.id=b.id and b.id2 = c.id2 and c.id3 = d.id3 and d.id4 = e.id4

Ja, mit spg er nu, om det ikke er hurtigere at lave INNER JOINs?

Noget a la:
2)
SELECT * from
(
SELECT * from
tab1 a
LEFT JOIN
tab2 b
on a.id = b.id) a
LEFT JOIN
tab3 b
on a.id2 = b.id2


Min logik siger mig at 1) ligger alle tabeller sammen, og begynder derefter at filtrere, hvor 2) kun tager det den skal bruge fra tabellerne lidt efter lidt.

Er der nogle kloge mennesker der ved noget om dette?
Avatar billede Lasse Novice
24. marts 2003 - 23:10 #1
baade 1) og 2) skal selvfoelgelig laves faerdig(saa alle 5 tabeller er med i sql saetningen)... jeg gad bare ikke lige goere det.
Avatar billede a1a1 Novice
24. marts 2003 - 23:19 #2
du kan jo selv checke i query analyzer

programs -> microsoft sql server -> Query Analyzer

hvis du sætter Show execution plan til (under Query) viser den dig hvordan den gør det

:o)
Avatar billede pierrehusted Nybegynder
25. marts 2003 - 06:27 #3
Det er meget vigtigt for hastigheden at have index på de felter du joiner på.

Men som a1 siger, så kan du checke hastigheden i Query Analyzer. Der kan du også køre en Index Tuning Wizard (mener den ligger under TOOLS), som kan anbefale dig hvilke indexer du skal tilføje.
Avatar billede janus_007 Nybegynder
26. marts 2003 - 10:08 #4
Der er ingen forskel på at lave den ene eller den anden slags. Den første du har lavet er en gammeldags oracle way (så vidt jeg er informeret), den anden er den "nye" måde, om man så må sige. Selve query optimizeren skal nok udvælge de korrekte måder at hente data på, det gør den vha. statistics. Med hensyn til index tuning er der ikke noget at hente lige i dit specielle tilfælde (ehh, jo medmindre din id ikke primary)
Avatar billede janus_007 Nybegynder
24. april 2003 - 09:12 #5
Luk venligst spørgsmålet!! - 1 mdr må være nok til at finde ud af om vi har ret.
Avatar billede Lasse Novice
24. maj 2003 - 00:44 #6
ja, det bliver janus der loeber med sejren denne gang.
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