Avatar billede ct20 Nybegynder
26. august 2005 - 14:42 Der er 8 kommentarer

optimering af SQL sætning

Jeg har en sql sætning som ser ud som herunder, er der nogen der har en god ide til hvordan man kan optimere den. selve sætningen kører på en codebase oven på en Dbase.

SELECT E.FIRMAOPL.INCO AS STAM1, Sum(IDNSVA * IDAMCF) As T1, IDIDAT As PERIODE FROM SROISDPL , E.FIRMAOPL  where SROISDPL.IDDIVN = E.FIRMAOPL.DIVI AND idcca1 >= '1001' and idcca1 <= '6007'  AND IDIDAT >= 20050708  AND IDIDAT <= 20050711 GROUP BY IDIDAT, E.FIRMAOPL.INCO
Avatar billede arne_v Ekspert
26. august 2005 - 14:45 #1
jeg tror at optimeringen skal bestå i at sætte index på de felter som
bruges i WHERE
Avatar billede claesdamlund Nybegynder
26. august 2005 - 22:57 #2
Arne V har ret, men desuden bør der altid være index på fremmednøgler. Ellers ser sætningen fin ud, forudsat Dbase ikke understøtter Inner Joins, som du ellers kunne (burde?) bruge for læsevenlighedens skyld.
Avatar billede ct20 Nybegynder
27. august 2005 - 11:37 #3
Hej begge svare er OK, men der skal lidt mere til. Vi snakke om ca 9 millioner records, som hentes ud af en stor db med 60 mill. records og lige nu tager det ca 17 timer. som sagt så er programmet kodet i delhi og med coebase i mellem delphi og databasen, så det kan måske være her problemet er. Håber i måske har nogle forslag til hvordan man kan løse problemet.
Avatar billede arne_v Ekspert
27. august 2005 - 11:40 #4
hvor meget fylder DB ?

er det CPU eller memory eller IO bound ?
Avatar billede arne_v Ekspert
27. august 2005 - 11:41 #5
[jeg antager at du ikke er specielt interesseret i vurderinger af DBase's
egnethed til en database i den størrelse]
Avatar billede ct20 Nybegynder
27. august 2005 - 12:02 #6
alt har interesse, så kom med de forslag i har. Databasen fylser ca 60G.
Jeg har lige fundet ud af at det er bedre at  "between right" end  >= and <= men om det er nok ved jeg ikke endnu.
Avatar billede arne_v Ekspert
04. september 2005 - 23:19 #7
den henter 147 resultat rækker ud per sekund

det bør kunne gøres hurtigere

det svarer jo til en hard IO per række der skal returneres

nøglen til performance må være:

1)  korrekt index i databasen

2)  caching i fil system eller applikation
Avatar billede arne_v Ekspert
29. september 2005 - 20:43 #8
kommet videre ?
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
Computerworld tilbyder specialiserede kurser i database-management

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