webForumDet fria alternativet

Hur mycket tjänar man på cursortype?

ASP

4 svar · 424 visningar · startad av Addeladde

Medlem sedan jan. 20013 406 inlägg
Frågan#1

Hej

Hur stor skillnad blir det på dessa två sätt att öppna ett recordset?
1

	Set RS = Server.CreateObject( "ADODB.Recordset" )
		RS .ActiveConnection = Con
		RS .CursorType = 3
		RS .Open sqlString

2

Set RS = con.execute(sqlString)
Medlem sedan feb. 200112 078 inlägg
#2

Jag ser ingen anledning att inte använda .Execute i samtliga fall, förutom när du explicit måste använda .Open på ett Recordset, av vilken anledning det nu må vara.

Desstuom; anropa med "con.Execute(sql**, ,128**)" också.

Medlem sedan jan. 20013 406 inlägg
#3

execute är alltså snabbare?

Medlem sedan feb. 200112 078 inlägg
#4

För att hämta ut data, om du bara ska iterera framåt genom recordset'et, så ja.

Skillnaderna är dock väldigt små såvida du inte har mycket anrop (mycket trafik).

Medlem sedan mars 20041 505 inlägg
#5

Alltså detta handlar egentligen inte om någon prestandaskillnad, utan vilka egenskaper ditt recordset får vilket påverkar vad du kan göra med det.
Men om du bara ska hämta poster ur databasen och visa dom rakt upp och ner så är det snabbast att använda execute.

Om du använder execute-metoden på ett databasobjektet så kan du inte sätta speciella egenskaper på recordsetet du får tillbaka. Du får istället ett klent (men resurssnålt) recordset som är Read-only och Forward-only, vilket betyder att du exempelvis bara kan gå framåt bland posterna, och inte använda metoderna MovePrevious eller MoveFirst. Recordsetet ärver dessutom CursorLocation från databasobjektet.

Men om du istället skapar ett separat recordset-objekt med Server.Createobject så kan du sätta vilka egenskaper du vill. Detta är bra om du exempelvis vill dela upp posterna i flera sidor och behöver CursorLocation 3.

261 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)