webForumDet fria alternativet

GetRows inte snabbare än RS-loop?

7 svar · 389 visningar · startad av Herman

HermanMedlem sedan maj 2001431 inlägg
#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

VideMedlem 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.

HermanMedlem 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

SPiNMedlem 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

JetboyMedlem sedan aug. 200133 inlägg
#5

Tar 7 sekunder att fylla array!!!

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

emissionMedlem 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

Erik JuhlinMedlem 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.

JosefMedlem 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??

154 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
151 ms — hämta tråd, inlägg och bilagor (db)