webForumDet fria alternativet

Hur ska man programmera? (snabb lästid)

ASP

10 svar · 754 visningar · startad av NEOLiNES

Medlem sedan okt. 200459 inlägg
Frågan#1

Sitter och programmerar lite nu, och har fått en fråga i mitt huvud som jag inte inte kan komma ifrån.

Vilket sätt att hämta information från en MySql-databas och presentera den går snabbast?

Version 1
Att som "vanligt" hämta samtliga poster och loopa ut dem i deras recordset.

Version 2
Att anväda getRows. Dvs. att placera alla poster i en array och därefter loopa ut samtliga poster i en for-sats.

Vad tror / vet ni?

Medlem sedan jan. 20023 327 inlägg
#2

Att spara ner db-resultatet direkt i en array med exempelvis getRows är fördelaktig eftersom du kan släppa db-anslutningen innan du loopar. Ska du öka presetandan ännu mer, kan du använda dig av en connection pooling.

Fast å andra sidan:
http://www.webforum.nu/showthread.php?t=119695&highlight=getrows

Medlem sedan juni 20019 519 inlägg
#3

Kör på det du känner att du behäskar... prestandan mellan dom är egentligen minimal på båda parterna (vad jag har sett / hört). Så länge du stänger kopplingen till databasen efter du är färdig med den så blir sajten mer stabil iallafall ;) Kan även nämna att getRows gör om allt till strängar(har jag för mig) så alla ID osv är sträng värden...

Medlem sedan okt. 200459 inlägg
#4

Ok, tack gubbar :) Öppnade för ett par dagar sedan Personlighet.com, men eftersom att jag har programmerat en funktion som låter medlemmarna bjuda in sina vänner på sin msn-lista, så blev sidan ganska tungt belastad snabbt, och segade ner som faen :( Så nu sitter jag och bygger om alla connections osv för att optimera så mkt som möjligt :)

Medlem sedan juni 20019 519 inlägg
#5

Det gäller för dig att ha snabba SQL anrop och stänga ner databas kopplingen när det inte behövs mer... det är det du får snabbheten ifrån ;)

Medlem sedan jan. 20023 327 inlägg
#6

Ocn en bra databashanterare, du använder väl inte Access?

Medlem sedan aug. 20003 575 inlägg
#7

Att stänga den så fort efter ditt anrop är rätt. Men du skall absolut inte öppna och stänga den mer än en gång per sida. Säg t.ex. att du har flera anrop till databasen på en och samma sida så kör dom på en och samma gång så öppna anslutning kör alla anrop och stäng sedan.

Det tar tid att öppna och stänga anslutningar.

Medlem sedan juni 20019 519 inlägg
#8

Compusa: Han skrev MySQL ;)

Medlem sedan okt. 200459 inlägg
#9

Tack för alla era tips! :) Har fått ett nytt problem nu, men jag startar en ny tråd angående den, då det gäller något helt annat! Tack för hjälpen!

Medlem sedan jan. 20023 327 inlägg
#10

Något mer du skulle kunna kolla på är connection pooling, osäker på hur det fungerar i klassisk ASP. Fördelen med connection pooling är att du på förhand allokerar ett antal kopplingar till databasen som du sedan lånar i dina script. Du slipper därmed att hela tiden göra kostsamma anslutningar och nerkopplingar mot databasen, istället lånar och lämnar du bara tillbaka till connection poolen.

Medlem sedan mars 20041 505 inlägg
#11

Använd Disconnected Recordsets.
Man ansluter och hämtar datan i ett recordset som vanligt, men kopplar ner och stänger serverkopplingen innan man loopar igenom alla poster.
Jag upplevde själv en dramatiskt prestandaförbättring med detta, speciellt om det är stora tunga frågor som repeteras i loopar.

266 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)