Avatar billede moba Nybegynder
12. marts 2004 - 11:38 Der er 7 kommentarer og
1 løsning

SQL optimering

Hejsa
jeg har en lidt kryptisk opgave
Jeg har en forespørgsel som trækker på 3 en tabel og 2 forespørgsler. Forespørgslen virker fint, men tager meget lang tid. Jeg kan oplyse at tabellen tal indeholder store tal mængder tal for een uge ca. 50.000 rækker
Jeg har brugt følgende sql statement.
Grunden til at jeg bruger IN er at A-Nr og B-Nr kan findes i et af flere steder i qrysælger og qrysupervisor.
Ex A-nr = 80808010 kan måske findes i qrysupervisor under tlf2.

SELECT qrysælger.Sælgernr, [TAL].[B-Nr], qrysælger.Fornavn, qrysælger.Efternavn, [TAL].[A-Nr], qrysupervisorer.Fornavn, [TAL].Dato, [TAL].Tidspunkt, [TAL].[Tid i sek], [TAL].Uge, qrysupervisorer.Sælgernr
FROM [TAL], qrysupervisorer, qrysælger
WHERE ((([TAL].[B-Nr]) In ([qrysælger].[tlf1],[qrysælger].[tlf2])) AND (([TAL].[A-Nr]) In ([qrysupervisorer].[tlf1],[qrysupervisorer].[fax],[qrysupervisorer].[tlf2],[qrysupervisorer].[privat tlf1],[qrysupervisorer].[privat tlf2])) AND (([TAL].Uge) Between [forms]![frmrapporter]![txtugefra] And [forms]![frmrapporter]![txtugetil]) AND ((qrysupervisorer.Sælgernr)=[forms]![frmrapporter]![txtsupervisor]));
Avatar billede trer Nybegynder
12. marts 2004 - 12:07 #1
Sørg for at der er indeks på alle felter du joiner på - det kan du sætte når du har tabellerne i design view.
Avatar billede proaccess Nybegynder
12. marts 2004 - 12:45 #2
Du kan prøve om nedenstående omslrivning kan lade sig gøre, og om det hjælper...

SELECT sæ.Sælgernr, ta.[B-Nr], , sæ.Fornavn, sæ.Efternavn, ta.[A-Nr], su.Fornavn, ta.Dato, ta.Tidspunkt, ta.[Tid i sek], ta.Uge, su.Sælgernr
FROM (qrySælger AS sæ INNER JOIN [TAL] AS ta ON (ta.[B-nr]=sæ.tlf1 OR ta.[B-Nr]=sæ.tlf2) INNER JOIN qrySupervisorer AS su ON (ta.[A-Nr]=su.tlf1 OR ta.[A-Nr]=su.fax OR ta.[A-Nr]=su.tlf2)
WHERE ta.Uge Between [Forms]![frmRapporter]![txtUgeFra] And [Forms]![frmRapporter]![txtUgeTil] AND su.Sælgernr=[Forms]![frmRapporter]![txtSupervisor];
12. marts 2004 - 12:57 #3
haha, Proaccess, My Man! :o) Der er langt mellem dine besvarelser her på eksperten efterhånden. Men man fornemmer, at du ligger og lurer hele tiden. Og lige så snart der er et kryptisk SQL-spørgsmål, så slår du til - hårdt og nådesløst ;o)
Da jeg så dette spørsmål, tænkt jeg straks, at det lige var et spørsmål, hvor du skulle på banen!
Avatar billede proaccess Nybegynder
12. marts 2004 - 13:04 #4
>Thomas: Der er jo også et lønnet arbejde, som skal passes...  og jeg har tæsketravlt for øjeblikket (implementering af nyt ERP-system med følgende omprogrammering af mine "gamle" Access-databaser m.v.)
12. marts 2004 - 13:09 #5
Du siger bare til, hvis du får brug for noget hjælp, ikk'? Det kan af og til godt betale sig at få fagfolk på banen, haha :o)
Avatar billede moba Nybegynder
12. marts 2004 - 13:45 #6
Hejsa, tak for jeres bud. Jeg løste problemet selv gennem 3 forespørgsler. Lidt træls at skulle oprette 3, men det reducere kørselstiden markant.
Morten
Avatar billede moba Nybegynder
12. marts 2004 - 13:53 #7
l
12. marts 2004 - 14:15 #8
Er det ikke god skik at give lidt point til de, som rent faktisk har lagt hovedet i blød for at hjælpe? Det er okay, at man selv arbejder videre med problemet, men så må man være villig til at ofre de point, som man har satset.
Jeg ville selv blive lidt mut, hvis én af mine kunder bad mig lave et program til dem, og da jeg så leverede det, så sagde de, at de ikke skulle bruge det alligevel, da de selv havde fundet på noget andet.

Bare lidt stof til eftertanke, så alle synes at det er sjovt at hjælpe hinanden.
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