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?
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.