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?
------------------
http://www.tavlingar.se
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)
------------------
Alltid lär man sig något nytt varje dag...
PaceMedlem sedan juni 20019 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!
------------------
Peter D
LarsGMedlem sedan dec. 200012 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.
------------------
essentitia preter non sans multiplicandum
LarsGMedlem sedan dec. 200012 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.
------------------
essentitia preter non sans multiplicandum
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?
------------------
http://www.tavlingar.se
erkaMedlem sedan dec. 19996 522 inlägg ja det kan du, om du kör mssql i alla fall :)
------------------
Våga lek med dig själv
Och om man kör SQL Server? Varför tjänar man på det?
------------------
http://www.tavlingar.se
VideMedlem sedan dec. 19998 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.
------------------
Vide rox = new Vide();
rox.learn("C#");
webeye.nu