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
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.
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.
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.
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.