Det är klart du använder ju inte
Set Rec_show = Server.CreateObject("ADODB.Recordset")
vilket jag inte fattar varför det finns, jag använder det aldrig tycker att det förstör prestandan enormt att använda det
3 svar · 272 visningar · startad av Johnsen
Bara för att kolla skapade jag två sidor på lite olika sätt.
Den ena går igenom ca 1700 poster på 3 sekunder,
medan den andra tar hela 8 sekunder på sig för samma sak.
Kan någon svara på vari prestandaskillnaden ligger?
Denna trodde jag skulle gå snabbast, men det gjorde den inte...
<%
Response.Write now() &"<br>"
Set Conn = Server.CreateObject("ADODB.Connection")
Set Rec_show = Server.CreateObject("ADODB.Recordset")
Conn.Open "Driver={SQL Server};" & _
"Server=XXX.XXX.XX.X;" & _
"Address=XXX.XXX.XX.X,1433;" & _
"Network=DBMSSOCN;" & _
"Database=Namn;" & _
"Uid=userX;" & _
"Pwd=XXXXXX;"
SQL_show = "SELECT INTEREFE, TULLID, REFNR1, UTLDAT FROM tutlin WHERE RECIROUTADDR='ROAD' ORDER BY UTLDAT DESC"
Rec_show.Open SQL_show, Conn, 3, 1
if Rec_show.eof Then
response.write "Sökningen gav inga träffar!"
Else
Rec_show.PageSize = 10
antalPoster = Rec_show.RecordCount
antalSidor = Rec_show.PageCount
aktuellSida = Request("sida")
If aktuellSida = "" Then aktuellSida = 1
Rec_show.AbsolutePage = aktuellSida
aktuellPost = 0
Response.Write "Funna poster: "& antalPoster &"<br>"
Response.Write "Sida: "& aktuellSida &" av "& antalSidor &"<br>"
If cint(aktuellSida) > 1 Then Response.Write "<a href=""default_page2.asp?sida="& aktuellSida-1 &"""> Föregående</a> | "
If cint(aktuellSida) < antalSidor Then Response.Write "<a href=""default_page2.asp?sida="& aktuellSida+1 &"""> Nästa </a>"
Response.Write "<hr>"
do until Rec_show.eof or aktuellPost >= Rec_show.PageSize
Response.Write Rec_show("INTEREFE") &"<br>"
Response.Write Rec_show("TULLID") &"<br>"
Response.Write Rec_show("REFNR1") &"<br>"
Response.Write Rec_show("UTLDAT") &"<hr>"
aktuellPost = aktuellPost + 1
Rec_show.movenext
loop
End If
set Rec_show = nothing
Conn.Close
set Conn = nothing
Response.Write now() &"<br>"
%>
Denna utförde samma sak som den ovanstående, men dubbelt så snabbt...
<%
Response.Write now() &"<br>"
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Driver={SQL Server};" & _
"Server=XXX.XXX.XX.X;" & _
"Address=XXX.XXX.XX.X,1433;" & _
"Network=DBMSSOCN;" & _
"Database=Namn;" & _
"Uid=userX;" & _
"Pwd=XXXXXX;"
SQL_rakna = "SELECT COUNT(*) AS raknare FROM tutlin WHERE RECIROUTADDR='ROAD'"
set Rec_rakna = Conn.execute(SQL_rakna)
SQL_show = "SELECT INTEREFE, TULLID, REFNR1, UTLDAT FROM tutlin WHERE RECIROUTADDR='ROAD' ORDER BY UTLDAT DESC"
set Rec_show = Conn.execute(SQL_show)
if Rec_show.eof Then
response.write "Sökningen gav inga träffar!"
Else
sidStorlek = 10
antalPoster = Rec_rakna("raknare")
antalSidor = Round((antalPoster / sidStorlek) + 0.499)
aktuellSida = Request("sida")
If aktuellSida = "" Then aktuellSida = 1
startPost = aktuellSida * sidStorlek - sidstorlek
aktuellPost = 0
Response.Write "Funna poster: "& antalPoster &"<br>"
Response.Write "Sida: "& aktuellSida &" av "& antalSidor &"<br>"
If cint(aktuellSida) > 1 Then Response.Write "<a href=""default_page.asp?sida="& aktuellSida-1 &"""> Föregående</a> | "
If cint(aktuellSida) < antalSidor Then Response.Write "<a href=""default_page.asp?sida="& aktuellSida+1 &"""> Nästa </a>"
Response.Write "<hr>"
Rec_show.move startPost
Do Until Rec_show.eof Or aktuellPost >= sidStorlek
Response.Write Rec_show("INTEREFE") &"<br>"
Response.Write Rec_show("TULLID") &"<br>"
Response.Write Rec_show("REFNR1") &"<br>"
Response.Write Rec_show("UTLDAT") &"<hr>"
aktuellPost = aktuellPost + 1
Rec_show.movenext
loop
End If
set Rec_show = nothing
set Rec_rakna = nothing
Conn.Close
set Conn = nothing
Response.Write now() &"<br>"
%>
Det är klart du använder ju inte
Set Rec_show = Server.CreateObject("ADODB.Recordset")
vilket jag inte fattar varför det finns, jag använder det aldrig tycker att det förstör prestandan enormt att använda det
Kanske skulle testa att ändra denna rad:
Rec_show.Open SQL_show, Conn, 3, 1
till:
Rec_show.Open SQL_show, Conn, 1, 3
borde gå ngt fortare ... men, inte lika fort kanske som det andra exemplet *ler*
cya,
PatrikB
Ok. Jag provade med att ändra som du sa, PatrikB, men det gav ingen märkbar förbättring.
Har jag fattat rätt om jag tror att:
Rec_show.Open SQL_show, Conn, 3, 1
ger en statisk kopia av Rec, där förändingar gjorda av andra inte visas
och som indikerar att det är en öppning av typen read only.
och
Rec_show.Open SQL_show, Conn, 1, 3
visar förändringar gjorda av andra och låser recorden endast när man uppdaterar.