19. august 2003 - 23:21Der er
3 kommentarer og 2 løsninger
Effektiv SQL
Hej
Jeg har et modul med en del DAO recordsæt, der bl.a. bygger på hinanden, Updates m.m. Koden virker sådan som jeg havde tænkt mig, men nok ikke så effektivt som den kunne - den varer efterhånden et par minutter ved en lille 1000 forespørgsler på en PIII 866 MHz.
Spørgsmål: Nogle retningslinier og anvisninger på effektivisering på hvad man bør gøre og hvad man ikke bør gøre? (jeg ikke noget kode, jeg kan sende nu)
Det er selvfølgelig svært, når der ikke er noget konkret kode, som vi kan kommentere.
Men generelt, så gælder det selvfølgelig om at have indekserne i orden på tabellerne. Dvs indekser på alle felter, som benyttes som kriterier eller til at joine på.
Derudover kan man optimere lidt ved f.eks. kun at benytte snapshots, hvis man ikke skal opdatere i recordsettet:
Set rs = db.Openrecordset("Din tabel", dbopensnapshot)
Hvis databasen IKKE er splittet op i en frontend/backend, kan man vinde en del ved at bruge metoden Seek til at søge i recordsettet, da denne søgemetode er meget hurtig. Men hvis du slet ikke laver søgninger, så er det ikke relevant, ligesom jeg normalt også vil anbefale at splitte databasen op i frontend og backend (selvom det så går endnu langsommere!)
Jeg kunne formentlig væære mere konkret, hvis jeg havde et kodeeksempel.
Tak for Jeres hints - gav ikke lige det skub, jeg havde håbet. Men alligevel tak for Jeres ideer.
Jeg kunne ikke komme med kodeeksempler, da der blev 6 stk. SQL-sætninger, der dels blev afviklet som nestede loops og mængden af kode ville nok overskride dette forums mængde af hjælp.
Jeg har dog fået effektiviseret SQL-koden så afviklingen faldt med ca. 45% i tidsforbrug.
Mvh. Vanni
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.