webForumDet fria alternativet

GetRows inte snabbare än RS-loop?

ASP

7 svar · 390 visningar · startad av Herman

Medlem sedan maj 2001431 inlägg
Frågan#1

Ska inte GetRows vara snabbare än Recordset? Jag har suttit och testat de båda varianterna och finner inte alls att GetRows är snabbare än Recordset. Får samma totaltid för båda fallen. Det man tjänar i tid på att loopa igenom datan verkar förloras då man fyller arrayen.

Har någon andra erfarenheter?

----------------------------------------
SELECT * FROM viewdokument
where fld1='asa' AND fld2='jahaja' AND doktyp in ('apa','epa','ipa')
ORDER BY fld1,doktyp,beteckning
----------------------------------------
Start: 15:23:24
RS opened: 15:23:25
RS count: 15:23:26
RS GetRows: 15:23:33 <- Tar 7 sekunder att fylla array!!!

Sökning på gav 1046 träffar.

------------------
En eller annan godbit från pannan

Medlem sedan dec. 19998 577 inlägg
#2

Visa koden också, så att det inte skiljer sig där... :)

------------------
Ze mor aj kåmmjonikejt wiz pipol ze mor i lörn.

Medlem sedan maj 2001431 inlägg
#3

Det är inte mkt kod i fråga

Response.Write "<HR><FONT size=1>" & SQL & "</FONT><HR>"
Response.Write "Start:" & Time
rs.CacheSize = 2000
rs.Open sql, cn,1,1
Response.Write "<BR>RS opened: " & Time
 intHits = rs.RecordCount
 Response.Write "<BR>RS count: " & Time
 arrdata = rs.GetRows
 rs.Close
Response.Write "<BR>RS GetRows: " & Time

------------------
En eller annan godbit från pannan

Medlem sedan mars 20007 896 inlägg
#4

Som jag har förstått det är det själva användningen av ett Recordset som slöar ner. Du måste ha en databaskoppling öppen hela tiden, osv. Med GetRows öppnar du, hämtar allt från databasen, stänger och loopar.

Du öppnar ju bara recordsettet, vilket även måste ( Okey, inte _måste_, men det är lite bättre ;) ) göras med GetRows.

Gör ett test ( Helst på två olika sidor ) som hämtar och loopar data från databasen, så kan du göra en rättvis jämförelse.

------------------
SPiN, bjorne.w@telia.com

Medlem sedan aug. 200133 inlägg
#5

Tar 7 sekunder att fylla array!!!

Fel, det tar 7 sekunder att fylla array OCH stänga recordsettet.

Medlem sedan dec. 19996 721 inlägg
#6

Som jag har förstått det är det själva användningen av ett Recordset som slöar ner. Du måste ha en databaskoppling öppen hela tiden, osv. Med GetRows öppnar du, hämtar allt från databasen, stänger och loopar.

Just själva fyllandet av arrayen kan ta tid.

Disconnected recordsets oftast är att föredra

Medlem sedan maj 200010 687 inlägg
#7

Ursprungligen av SPiN Som jag har förstått det är det själva användningen av ett Recordset som slöar ner. Du måste ha en databaskoppling öppen hela tiden, osv.

Där har du fel. Man kan ha frånkopplade recordsets.

Medlem sedan mars 20023 561 inlägg
#8

Vill du bara veta hur många poster i databasen som berörs??

Om du vill det skippa Recordsetet helt och kör bara en:

strSQL = "SELECT count(*) FROM TABELL" 'Din sqlsats
set counter = Connect.Execute(strSQL)

Response.Write counter.fields(0) & "<br>"

eller har jag fattat detta helt fel??

263 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)