/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Paging recordset tager tid ved mange recor~
Fra : Leif Neland


Dato : 24-04-08 09:12

ASP/Vbscript/mssql:

Jeg har en webside, der viser et antal records, 20 af gangen pr side.
Men den tager laaang tid, når der er mange records.

Hvis jeg kører queriet direkte i enterprise manager gui'et, kommer
resultatet "øjeblikkeligt"

Jeg har benchmarket det, ved at bruge timer-funktionen, og udskrive tiden
efter hver sætning, og fundet ud af, at det er "PageCount = Rs.PageCount",
der tager tid,

Start: 0.0

Rs.Open Sql, Conn, 1 0.031s
ir rs.eof then
...
end if 0.043s

RS.PageSize = 20 0.043s
Rs.AbsolutePage = Page 0.043s
RecCount = Rs.PageSize 0.043s
PageCount = Rs.PageCount 17.512s !!!!

Fjerner jeg den sætning, så er det
Response.Write "Antal: "&Rs.RecordCount
der tager tid.

Samtidig kunne jeg se, at cpu-forbruget steg til over 50%, mens det query
kørte.

Tiden er nogenlunde 0.01 sec per record, og det løber op, når der er 2000
records i resultat-sættet.
Som test, fjernede jeg også den sætning med rs.RecordCount, og antog at der
var 100 sider i resultatet, og så pager den fint, med at lave hele tabellen
på 0.047s !!

Så løsningen er at lave to queries, et der er "select count (*) as antal
from ...." og et andet, der finder selve data.

(Denne mail startede som et spørgsmål, men som ofte sker, når man prøver at
forklare problemet i detaljer for andre, så finder man selv løsningen. Og
den løsning vil jeg da gerne have arkiveret for eftertiden )



 
 
Martin (24-04-2008)
Kommentar
Fra : Martin


Dato : 24-04-08 10:40

Leif Neland wrote:
> Så løsningen er at lave to queries, et der er "select count (*) as antal
> from ...." og et andet, der finder selve data.

Det plejer jeg også at gøre.
SELECT COUNT(*) FROM table WHERE ...

Plejer aldrig at tage tid (altså tid er alt over 5 sek) - heller ikke
ved 100.000 records

Søg
Reklame
Statistik
Spørgsmål : 177578
Tips : 31968
Nyheder : 719565
Indlæg : 6409072
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste