24. marts 2003 - 23:08Der 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?
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
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.
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)
ja, det bliver janus der loeber med sejren denne gang.
Synes godt om
Ny brugerNybegynder
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.