Avatar billede celcius Nybegynder
07. maj 2004 - 11:17 Der er 3 kommentarer og
1 løsning

Langsom SQL statement

Jeg har en åndsvagt langsom SQL statement jeg helst skulle have til at køre hurtigere på en eller anden måde:

"SQLstmt = "SELECT DISTINCT Field1 FROM Tabte1 WHERE Field1 IN (SELECT DISTINCT Field2 FROM Table2)"

Jeg har 4 tabeller med et unikt ID der går igen i alle 4 tabeller. Jeg har brug for at lave en liste over de brugere der er registreret i en eller flere af disse tabeller. Ovenstående SQL kommando fungerer fint nok (inkluderer dog kun 2 tabeller) - den er bare sindssygt langsom - tager 35-40 sekunder om at loade, selvom der kun er et simpelt loop efter den, der bladrer igennem de valgte data. Hvorfor er den så langsom?
Avatar billede celcius Nybegynder
07. maj 2004 - 11:19 #1
ffs, der skulle stå:

"SQLstmt = "SELECT DISTINCT Field1 FROM Tabte1 WHERE Field1 NOT IN (SELECT DISTINCT Field2 FROM Table2)"
07. maj 2004 - 11:23 #2
Prøv med en outer join i stedet:
SELECT Table1.Field1
FROM Table1 LEFT JOIN table2 ON table1.Field1 = table2.Field2
WHERE table2.field2 is null

Derud over er det en SQL oftest hurtigts, når den gemmes i en forespørgsel, som så eksekveres i stedet for den rene SQL (da forespørgslen er kompileret da den blev gemt)
Avatar billede celcius Nybegynder
07. maj 2004 - 11:36 #3
Ja, det kører jo unægteligt hurtigere. Jeg klemte en DISTINCT fætter ind og så fik jeg hvad jeg ville have. Resultat:

"SELECT DISTINCT Table1.Field1
FROM Table1 LEFT JOIN table2 ON table1.Field1 = table2.Field2
WHERE table2.field2 is null"

Spørgsmål lukket, svar accepteret, points givet.

Lune vinde
Jakob
07. maj 2004 - 11:38 #4
perfekt - og tak :o)
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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