Trådstart 24 juli 2001 12:16 #1 Jag har en sida som ökar värdet i en kolumn och därefter skickar vidare besökaren till en annan URL (som hämtas i databasen).
Finns det något som kan förbättras i följande kod:
<%@ ENABLESESSIONSTATE = False %>
<%
Option Explicit
Response.Buffer = True
Dim objConn, objRS, strURL, strConn, strSQL
strConn = ...
strSQL = "SET NOCOUNT ON; UPDATE col1 SET fld1 = fld1 + 1 WHERE id = " & Request.QueryString("ID") & " " &_
"; SET NOCOUNT OFF; SELECT fld2 FROM col1 WHERE id = " & Request.QueryString("ID") & " "
Set objConn = Server.CreateObject("ADOdb.Connection")
With objConn
.Open strConn
Set objRS = .Execute(strSQL)
End With
strURL = objRS(0)
objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
Response.Redirect strURL
%>
Vilken/vilka cursor(s) skall jag använda för Execute?
Jag såg en jätteliten optimering...:)
Du använder Request.QueryString("ID") två gånger kör in den i en variabel och använd variabeln i stället.
Jag förstår dock inte denna raden riktigt:
With objConn
.Open strConn
Set objRS = .Execute(strSQL)
End With
strURL = objRS(0)
Pace Medlem sedan juni 2001 9 024 inlägg With objConn
.Open strConn
Set objRS = .Execute(strSQL)
End With
Denna koden bara förenklar, så att man slipper skriva objConn flera gånger. Men här kan man göra om det till:
objConn.Open strConn
Set objRS = objConn.Execute(strSQL)
Ännu en extrem optimering!
L LarsG Medlem sedan dec. 2000 12 464 inlägg Som sagt,kodmässigt är det väl inte så mycket.
Det man kan fundera på är att göra sql-uttrycket till en stored procedure.
Man kan också lagra värdet på Url-en i formuläret så att man slipper hämta det.
L LarsG Medlem sedan dec. 2000 12 464 inlägg Vad menar du med cursor vid execute? Om man gör
set rs = conn.execute
så blir recordsetet read-only och forward-only och det är ju det bästa om man bara vill läsa ett värde.
Ok. Men kan man tjäna något på att göra en lagrad procedur om man skall hämta data från endast en tabell?
E erka Medlem sedan dec. 1999 6 522 inlägg ja det kan du, om du kör mssql i alla fall
Och om man kör SQL Server? Varför tjänar man på det?
Vide Medlem sedan dec. 1999 8 577 inlägg Dialekten T-SQL som MSSQL använder innehåller en rikare syntax vilket medför att du kan skapa mer komplexa SQL-satser. Sedan är MSSQL också en mer kraftfull databas skapad för att tåla mycket trafik och samtidiga anrop.