表中主鍵必須為標識列,[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的游標存儲過程分頁)

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

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

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

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

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

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

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

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

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


          網(wǎng)站導航:
           
           
          主站蜘蛛池模板: 久治县| 建德市| 黑水县| 平度市| 遵化市| 万全县| 昌黎县| 习水县| 平潭县| 留坝县| 苏尼特左旗| 雷波县| 东至县| 仙居县| 夏邑县| 玉树县| 南宫市| 涞水县| 珲春市| 射阳县| 宁河县| 乌苏市| 吴旗县| 通山县| 壶关县| 克拉玛依市| 毕节市| 临江市| 阆中市| 正镶白旗| 仲巴县| 呼伦贝尔市| 交城县| 建瓯市| 阿克陶县| 巨野县| 九寨沟县| 房产| 长垣县| 巴南区| 吐鲁番市|