表中主鍵必須為標(biāo)識列,[ID] int IDENTITY (1,1)

            1.分頁方案一:(利用Not In和SELECT TOP分頁)

            語句形式:

          SELECT TOP 10 *
          FROM TestTable
          WHERE(ID NOT IN
               (SELECT TOP 20 id
              FROM TestTable
              ORDER BY id))
          ORDER BY ID
          SELECT TOP 頁大小 *
          FROM TestTable
          WHERE(ID NOT IN
               (SELECT TOP 頁大小 * 頁數(shù) id
              FROM表
              ORDER BY id))
          ORDER BY ID

            2.分頁方案二:(利用ID大于多少和SELECT TOP分頁)

            語句形式:

            SELECT TOP 10 *
          FROM TestTable
          WHERE(ID>
               (SELECT MAX(id)
              FROM(SELECT TOP 20 id
                  FROM TestTable
                  ORDER BY id) AST))
          ORDER BY ID
          SELECT TOP 頁大小 *
          FROM TestTable
          WHERE(ID>
               (SELECT MAX(id)
              FROM(SELECT TOP 頁大小 * 頁數(shù) id
                  FROM 表
                  ORDER BY id) AST))
          ORDER BY ID

            3.分頁方案三:(利用SQL的游標(biāo)存儲過程分頁)

          create procedureSqlPager
          @sqlstrnvarchar(4000),--查詢字符串
          @currentpageint,--第N頁
          @pagesizeint--每頁行數(shù)
          as
          setnocounton
          declare@P1int,--P1是游標(biāo)的id
          @rowcountint
          execsp_cursoropen@P1output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcountoutput
          selectceiling(1.0*@rowcount/@pagesize)as總頁數(shù)--,@rowcountas總行數(shù),@currentpageas當(dāng)前頁
          set@currentpage=(@currentpage-1)*@pagesize+1
          execsp_cursorfetch@P1,16,@currentpage,@pagesize
          execsp_cursorclose@P1
          setnocountoff

            其它的方案:如果沒有主鍵,可以用臨時(shí)表,也可以用方案三做,但是效率會低。

            建議優(yōu)化的時(shí)候,加上主鍵和索引,查詢效率會提高。

            通過SQL 查詢分析器,顯示比較:我的結(jié)論是:

            分頁方案二:(利用ID大于多少和SELECT TOP分頁)效率最高,需要拼接SQL語句

            分頁方案一:(利用Not In和SELECT TOP分頁) 效率次之,需要拼接SQL語句

            分頁方案三:(利用SQL的游標(biāo)存儲過程分頁) 效率最差,但是最為通用

          posted on 2008-09-20 15:57 李威威 閱讀(134) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
           
          主站蜘蛛池模板: 饶阳县| 磐石市| 旬邑县| 乌兰县| 鹤庆县| 景谷| 云霄县| 盐边县| 萨嘎县| 大埔区| 库伦旗| 安徽省| 稷山县| 大宁县| 五台县| 轮台县| 塘沽区| 子洲县| 临泽县| 黎川县| 进贤县| 广平县| 金阳县| 株洲县| 怀远县| 甘孜| 通山县| 金华市| 洛隆县| 安丘市| 五指山市| 云霄县| 定安县| 工布江达县| 招远市| 汝城县| 钟山县| 镇坪县| 大理市| 鄯善县| 杭锦旗|