程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> SQL查詢的分頁思路

SQL查詢的分頁思路

編輯:關於MYSQL數據庫

    如果用一般的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查詢得心得.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved