在DVBBS論壇上看到cwbnig寫的一個關于數據庫操作的類,就下載下來看一下。
發現其中在分頁時讀取記錄時的代碼比較特殊,至少以前我寫程序時沒有這樣寫過。
輸出上下分頁時也是再用“select count(*) from table where 條件”而不是用已打開的rs.recordcount屬性。以前有讀過一些文章說用rs.recordcount很耗資源,于是用正在運行的程序測試了一下(每天1萬IP左右的訪問量)。數據庫中共有687條數據。
原未改動前采用最普通的分頁程序讀出所有記錄,第一次,406.25毫秒,第二次,296.875毫秒,第三次,343.750毫秒,后又刷新了好幾次,最快一次是203.375毫秒。
改進分頁的讀取程序后,第一次,46.875毫秒,第二次,78.125毫秒,第三次,46.875毫秒。
真是差太多了,以后再也不用rs.recordcount了:(
然后再改讀取記錄的程序,原使用的是最普通的讀取記錄的程序,現改為如下代碼
(SQL可用):
...
max="SELECT MIN(id) FROM (SELECT TOP "&(page-1)*pagesize+1&" id FROM table ORDER BY id DESC) tbl"
strsql="SELECT TOP "&pagesize&" * FROM table WHERE id <=("&max&") ORDER BY id DESC"
rs.open strsql,conn,1,1
...
(ACCESS可用):
...
strsql="SELECT TOP "&pagesize*page&" * FROM table ORDER BY id DESC"
strsql="SELECT TOP "&pagesize&" * FROM ("&strsql&") AS tblme ORDER BY "&id&" ASC"
strsql="SELECT * FROM ("&strsql&") AS tblme ORDER BY "&id&" DESC"
rs.open sql,conn,1,1
...
不過,這個改了之后,頁面執行時間到沒有減少(可能是記錄數不多的原因,明天找個記錄數多點的再改一下)。一直是46.875毫秒,第二、三、五十幾頁都是這個速度,偶爾會出現32.125毫秒:)
新聞熱點
疑難解答