Avatar billede vanni Nybegynder
19. august 2003 - 23:21 Der 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)

Access 2000 er opdateret via Office Update.

Mvh. Vanni
Avatar billede arne_v Ekspert
19. august 2003 - 23:37 #1
Nogle generelle hints:

index på alle felter som ikke er primær nøgle og som bruges til join
eller where betingelse

undgå brug af VB funktioner i SQL sætninger
19. august 2003 - 23:38 #2
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.

/Thomas
Avatar billede arne_v Ekspert
19. august 2003 - 23:38 #3
Men ellers er det svært at sige uden at vide noget som helst om din
database.
Avatar billede arne_v Ekspert
19. august 2003 - 23:39 #4
Og du har naturligvis prøvet Tools Analyze Performance.
Avatar billede vanni Nybegynder
20. august 2003 - 23:00 #5
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
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