Avatar billede lasserasch Juniormester
22. september 2009 - 13:07 Der er 6 kommentarer og
1 løsning

Sql forespørgelser. Langsom udførelse...

Hey alle.

Har en Web side som skal trække sindsygt mange data ud fra rigtig mange forskellige tabeller en gang i døgnet.

Jeg oplever dog at det tager alt alt for lang tid, fordi jeg kan lave samme forespørgelser direkte i SQL Management Studio på samme server meget hurtigere.

Jeg tror måske det er fordi jeg åbner og lukker SQL server forbindelsen for hvert eneste select jeg laver.

Jeg har 8.000 records den selecter ud som det første. Og for hver af disse records laver den 10 andre forespøgelser ned i forskellige andre tabeller via andre klasser i min kode.

Så jeg tænker om det er muligt at bruge samme SQL forbindelse i stedet for at åbne/lukke hele tiden?

Jeg vil nødigt skulle medsende SQL connectionen til hver eneste metode, så kan man evt. lave noget statisk et eller andet?

Så mit spørgsmål er vel hvad der findes af muligheder for mig.


Mvh.
Lasse
Avatar billede bvli Praktikant
22. september 2009 - 13:17 #1
Hvis det er eksakt den samme connection string du bruger til dine connections, skulle din connection-pool cache dine connections, så du reelt bruger den samme connection anyway.

Men ville det ikke være en mulighed, at lave noget af det beregning med en stored procedure i stedet for at lave det klient-side?
Avatar billede kalp Novice
22. september 2009 - 13:51 #2
Søg på singleton pattern.
Avatar billede bitmatic Nybegynder
22. september 2009 - 14:17 #3
Det kunne vel også være data-transfer der er din flaskehals.

Hvis du laver 10*8000 forespørgsler, så skal der jo ikke sendes ret mange 100 bytes pr. forespørgsel før det er rigtig mange Megabyte data der skal overføres.
Avatar billede arne_v Ekspert
23. september 2009 - 03:56 #4
Som bvli siger så bruger SqlClient per default connection pooling. Det er usandsynligt at Connection Open/Close skulle betyde noget for performance (forudsat at du får kaldt Close !!!!).

Mit bedste bud på optimering vil være at bruge 1 query med JOIN fremfor 1+8000 queries.
Avatar billede lasserasch Juniormester
04. oktober 2009 - 21:32 #5
Hey alle... Smid svar for points dem som vil have :-)

Mine SQL statements var rimelig simple.

F.eks. "Select * from tblusers where id = 300" osv...

Jeg endte med at lave det om til
"select * from tblusers" og så gemme alle resultaterne på serveren i cachen.

På den måde kunne jeg nøjes med kun at lave < 10 forespørgelser til SQL databasen og i stedet "bare" gennemløbe resultaterne som var gemt i hukommelsen.

Og når jeg var færdig med det hele cleare hukommelsen.

Det gav mig et performanceboost på ca. 800%, så nu er hastigheden helt fin. :-)

Tak for inputs...

Mvh.
Lasse
Avatar billede arne_v Ekspert
22. oktober 2009 - 23:21 #6
Det må være bvli som skal smide et svar.
Avatar billede lasserasch Juniormester
11. oktober 2010 - 21:18 #7
lukket
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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