12. marts 2004 - 11:38Der 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]));
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];
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!
>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.)
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
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.
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.