Avatar billede Lasse Novice
23. oktober 2002 - 01:56 Der er 14 kommentarer og
2 løsninger

Det tager laaaang tid

Hej med jer alle sammen....

Alt foelgende er lavet i SQL query analyzer...

Jeg har en tabel(derivatives) hvori der er 250000 raekker. Der er 3 kolonner deri, clientID, derivative_code og expertsys_code. Alle clientID's vaerdier er pt vaerdien 4. Der er ca 20 forskellige vaerdier af derivative_code, og der er ca. 2000 forskellige vaerdier af expertsys_code.

Nu vil jeg gerne uddrive alle de forskellige expertsys_code hvor derivative_code starter med f.eks. 'FO'. Det har jeg gjort ved:

SELECT distinct expertsys_code FROM derivatives WHERE SUBSTRING(derivative_code,1,2) = 'FO'

Problemet er nu at dette udtraek tager lidt over et sekund. Er det normalt?
Tager jeg f.eks. og skriver:

SELECT expertsys_code from derivatives

tager det over 3 sekunder!!!!

Er det virkelig meningen at det skal tage saa lang tid? Er der nogen der kan sige mig hvorfor. Jeg har umiddelbart lavet et primary index paa de 3 kolonner, og samtidig har jeg lavet enkeltvis index paa kolonnerne hver isaer.

Please help, da jeg virkelig ikke kan se hvad jeg goer galt.
Avatar billede bennytordrup Nybegynder
23. oktober 2002 - 07:15 #1
Hvad siger Query Analyzer til følgende:

SELECT distinct expertsys_code FROM derivatives WHERE derivative_code like 'FO%'
Avatar billede bennytordrup Nybegynder
23. oktober 2002 - 07:17 #2
Derudover skulle der ikke være noget galt. Er Serveren belastet af andre kørende processer? Har SQL Server problemer med at få RAM i forhold til andre processer på selve computeren?
Avatar billede arne_v Ekspert
23. oktober 2002 - 08:27 #3
Et sekund om at søge igennem 250000 rows er ikke så ringe.

Men prøv Bennys forslag om brug af LIKE, den er
muligvis optimeret bedre i SQLServer.
Avatar billede Lasse Novice
23. oktober 2002 - 18:12 #4
Ja, jeg troede faktisk at LIKE operatoren var langsommeren, men det er faktisk den jeg bruger. For simpelthedens skyld, skrev jeg bare = istedet. Men det er stadig lige langsomt.

Hvordan kan jeg checke om den er overbelastet??? Ikke at jeg tror den er det, men der er faktisk baade FTP- og WWW server paa den ogsaa. Der er dog ingen brugere paa disse idet jeg leger med SQL serveren.

Hvad kan man goere for at optimere dette? Jeg mener soegemaskiner er sindsyge hurtige, men det er sikkert ogsaa en anden teknologi. Kan man evt. saette flere maskiner sammen til at soege paa efter resultatet( cluster hedder det vist )  eller hvad goer man i denne situation?
Avatar billede bennytordrup Nybegynder
23. oktober 2002 - 18:18 #5
Hvor meget RAM er der i maskinen?

Hvor hurtig CPU/harddisk?
Avatar billede Lasse Novice
23. oktober 2002 - 23:43 #6
512 mb ram
2 Pentium III 866 Mhz processors
25 GB HD SCSI RAID
Avatar billede bennytordrup Nybegynder
24. oktober 2002 - 06:50 #7
Hvad siger joblisten med hensyn til hukommelsesbrug? Hvis den er meget tæt på 512 Mb eller over, så er RAM' et kritisk problem på maskinen.
Avatar billede Lasse Novice
24. oktober 2002 - 16:06 #8
Jeg vil proeve at kigge paa det, men lige inden du svarede dette, kiggede jeg selv.
Den laa paa de 150mb, men det var ved state=IDLE (ingen af serverne arbejdene). Kigger lige lidt mere paa det.
Avatar billede kennethrisum Nybegynder
27. oktober 2002 - 09:02 #9
Har du sat index på tabellen?

I givet fald, hvor?
Avatar billede Lasse Novice
27. oktober 2002 - 18:45 #10
Jeg har umiddelbart lavet et primary index paa de 3 kolonner, og samtidig har jeg lavet enkeltvis index paa kolonnerne hver isaer.
Avatar billede kennethrisum Nybegynder
28. oktober 2002 - 16:45 #11
OK. Hvad siger din "Server trace" til query'en?
Avatar billede Lasse Novice
05. november 2002 - 22:23 #12
undskyld jeg ikke lige har svaret, men har haft noget andet paa hjertet. Nu er jeg dog tilbage og vil gerne lige have loest dette. Hvordan kigger jeg paa "server trace"? Jeg ved ikke helt praecist hvad det er...
Avatar billede kennethrisum Nybegynder
06. november 2002 - 21:11 #13
I query analyzer kan du sætte op så den viser server trace samt execution plan
Avatar billede Lasse Novice
16. november 2002 - 22:45 #14
Jeg kan ikke vaelge server trace i menuen. Den er graa... Jeg kan dog vaelge baade execution plan og client statistic
Avatar billede websmith Nybegynder
14. januar 2003 - 14:18 #15
Jeg har haft samme problem. Det viste sig bare at være et netværks problem.

Jeg lavede en tun forspørgsel fra en query analyser over nettet til en server. Det to 28 sekunder.

Da jeg havde prøvet at kode om osv, så kom jeg til at tænke på om det måske var fordi Query Analyseren lavede al arbejdet, dvs. at sortere, joine osv, og så prøvede jeg at køre den samme forspørgsel på serveren, og der tog det under 1 sekund.

Måske skal du prøve det samme, med mindre at du rent fakstisk sidder og koder på serveren, så skal du bare ignorere mit indlæg.

Mvh

Bjørn Smith
Avatar billede Lasse Novice
26. februar 2003 - 16:53 #16
ok... jeg har ikke forbedret det, men laert at leve med det... anyway, takker for svarene
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