如果用一般的SELECT * 查詢SQL數(shù)據(jù)庫,然后用recordset進(jìn)行分頁的話,在返回結(jié)果很多的情況下將會是一個漫長的過程,而且很消耗內(nèi)存.你可能會有感覺,用access也比SQL快.
其實(shí)我們可以只取出我們每頁需要顯示的記錄數(shù),這樣的速度是驚人的,非常快.這里我們會用到聚集索引來快速確定我們需要取出的記錄數(shù)的位置.如下面:
if p>1 then 'p為PAGE頁數(shù)
if n="next" then'下一頁
sql="select top 26 * from song1 where id > "&pk&" and contains(songtitle,'"&songname&"')" 'PK為當(dāng)前頁的最大ID數(shù)
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值,默認(rèn)第一頁
end if
這里用到了全文檢索,速度也是很快的,我在52萬記錄下測試,最快可以46MS(機(jī)器C1.7. DDR 256M),感覺比較可以,我用like代碼模糊查詢頁測試過,在結(jié)果集很多的情況下比全文更快,但是如果結(jié)果很少(整個表只有那么幾條)將是漫長的過程,因?yàn)橐獙θ磉M(jìn)行掃描!
按上面的方法不能得出所查詢結(jié)果得總記錄數(shù),這里我們可以用select count(*) 來獲取記錄總數(shù),速度頁還過得去,不過感覺要慢一截,特別是記錄集很多得情況,不過這樣占用得內(nèi)存很小得.
以上是我最近搞SQL查詢得心得.
from: http://www.fixdown.com/article/article/2121.htm