如果用一般的SELECT * 查詢SQL數據庫,然後用recordset進行分頁的話,在返回結果很多的情況下將會是一個漫長的過程,而且很消耗內存.你可能會有感覺,用Access也比SQL快.
其實我們可以只取出我們每頁需要顯示的記錄數,這樣的速度是驚人的,非常快.這裡我們會用到聚集索引來快速確定我們需要取出的記錄數的位置.如下面:
if p>1 then 'p為PAGE頁數
if n="next" then'下一頁
sql="select top 26 * from song1 where id > "&pk&" and contains(songtitle,'"&songname&"')" 'PK為當前頁的最大ID數
elseif n="prev" then'上一頁
sql="select top 26 * from song1 where id < "&previd&" and contains(songtitle,'"&songname&"') order by id desc"'previd最小ID
end if
else
sql="select top 26 * from song1 where contains(songtitle,'"&songname&"')"'沒有指定PAGE值,默認第一頁
end if
這裡用到了全文檢索,速度也是很快的,我在52萬記錄下測試,最快可以46MS(機器C1.7. DDR 256M),感覺比較可以,我用like代碼模糊查詢頁測試過,在結果集很多的情況下比全文更快,但是如果結果很少(整個表只有那麼幾條)將是漫長的過程,因為要對全表進行掃描!
按上面的方法不能得出所查詢結果得總記錄數,這裡我們可以用select count(*) 來獲取記錄總數,速度頁還過得去,不過感覺要慢一截,特別是記錄集很多得情況,不過這樣占用得內存很小得.
以上是我最近搞SQL查詢得心得.