weidagang2046的專欄

          物格而后知致
          隨筆 - 8, 文章 - 409, 評(píng)論 - 101, 引用 - 0
          數(shù)據(jù)加載中……

          SQL查詢的分頁思路

          如果用一般的SELECT * 查詢SQL數(shù)據(jù)庫,然后用recordset進(jìn)行分頁的話,在返回結(jié)果很多的情況下將會(huì)是一個(gè)漫長的過程,而且很消耗內(nèi)存.你可能會(huì)有感覺,用access也比SQL快.
          其實(shí)我們可以只取出我們每頁需要顯示的記錄數(shù),這樣的速度是驚人的,非常快.這里我們會(huì)用到聚集索引來快速確定我們需要取出的記錄數(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é)果很少(整個(gè)表只有那么幾條)將是漫長的過程,因?yàn)橐獙?duì)全表進(jìn)行掃描!

          按上面的方法不能得出所查詢結(jié)果得總記錄數(shù),這里我們可以用select count(*) 來獲取記錄總數(shù),速度頁還過得去,不過感覺要慢一截,特別是記錄集很多得情況,不過這樣占用得內(nèi)存很小得.
          以上是我最近搞SQL查詢得心得.

          from: http://www.fixdown.com/article/article/2121.htm

          posted on 2006-10-27 12:17 weidagang2046 閱讀(276) 評(píng)論(0)  編輯  收藏 所屬分類: Database

          主站蜘蛛池模板: 习水县| 六枝特区| 望奎县| 龙泉市| 汉沽区| 社会| 合作市| 修武县| 黄龙县| 晋州市| 高要市| 温泉县| 衡阳县| 沙坪坝区| 长武县| 屏山县| 营口市| 山阴县| 游戏| 黔南| 达孜县| 渝中区| 西林县| 安丘市| 翼城县| 巴彦淖尔市| 沂南县| 五台县| 荔波县| 铁岭市| 韶关市| 黄大仙区| 洞口县| 米林县| 潜山县| 大悟县| 凌云县| 贡觉县| 绥德县| 丰宁| 平定县|