Avatar billede lasserasch Juniormester
02. februar 2007 - 11:20 Der er 5 kommentarer og
1 løsning

Query tager alt for lang tid

Hejsa.

Jeg har følgende query :

SELECT DISTINCT VARMSTL1.VARNR AS Varnr, VARMSTL1.VARTXT AS EmballageNavn, KVAMSTP.KUNNR AS Kundenr,  KVAMSTP.KVAFSK as pris

FROM KVAMSTP INNER JOIN

VARMSTL1 ON KVAMSTP.OFLVAR = VARMSTL1.VARNR CROSS JOIN
VALMSTP WHERE    (KVAMSTP.KUNNR = '000199')

ORDER BY VARMSTL1.VARNR




Der er rigtig mange records i min SQL database. Over 200.000...

Men denne query henter kun omkring 250 records ud. Det tager bare omkring 1 min og 10 sek at udføre den. Det er alt for lang tid...

Kan jeg gøre noget på min SQL server for at gøre denne process hurtigere?

/Lasse
Avatar billede -mundi- Nybegynder
02. februar 2007 - 11:29 #1
Du kan starte med at sætte et index på alle de felter du bruger som querybetingelser.
f.eks
KVAMSTP.OFLVAR
VARMSTL1.VARNR
KVAMSTP.KUNNR

er KVAMSTP.KUNNR et tekstfelt ?
Avatar billede 0xffff Nybegynder
02. februar 2007 - 11:32 #2
Du skal nok kigge på dine index på valmstp og kvamstp tabellerne. Mit bud at den laver en fuld tablescan på kunnr hver gang den itererer.
Du kan evt. tage en execution plan op og se om det er tilfældet.
Avatar billede lasserasch Juniormester
02. februar 2007 - 12:37 #3
Okay. Jeg ved så absolut intet omkring indexes på SQL tabeller. Er aldrig noget jeg har brugt, da jeg aldrig har arbejdet med særlig store data mængder i mine databaser.
Men kan se at det da er noget jeg skal sætte mig ind i.

Jeg har tilføjet index som -mundi- skrev. Nu tager det lige pludselig under 1 sek at udføre samme query.

Hvad sker der, når man sætte index på felter i en tabel?

Jeg takker mange gange for hjælpen! Smid et svar...!

/LAsse
Avatar billede 0xffff Nybegynder
02. februar 2007 - 12:42 #4
Det som der sker når man indekserer en tabel er at man finder en hurtigere vej frem til den post man ønsker.

I dagligt sprog, lad os tage en telefonbog som eksempel. Hvis du nu skulle finde Jens Hansen. Men at du ikke vidste ca. hvor i telefonbogen har var. Så skulle du kigge hver linie igennem i bogen. Det er det som svarer til et table scan.
Hvis den derimod er indekseret. Så ville du kunne nøjes med for en start at slå op under H for Hansen, og springe en hel del over.

Det er meget kort fortalt, den tekniske forklaring skal jeg ikke kede dig med :)
Avatar billede -mundi- Nybegynder
02. februar 2007 - 12:47 #5
1 stk svar
Avatar billede lasserasch Juniormester
02. februar 2007 - 12:48 #6
60 stk points...

/Lasse
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