分享java帶來(lái)的快樂

          我喜歡java新東西

          SQLServer 分頁(yè)sql

          有關(guān)分頁(yè) SQL 的資料很多,有的使用存儲(chǔ)過程,有的使用游標(biāo)。本人不喜歡使用游標(biāo),我覺得它耗資、效率低;使用存儲(chǔ)過程是個(gè)不錯(cuò)的選擇,因?yàn)榇鎯?chǔ)過程是經(jīng)過預(yù)編譯的,執(zhí)行效率高,也更靈活。先看看單條 SQL 語(yǔ)句的分頁(yè) SQL 吧。

          方法1:
          適用于 SQL Server 2000/2005
          SELECT TOP 頁(yè)大小 *頁(yè)數(shù)
          FROM table1
          WHERE id NOT IN
                    (
                    
          SELECT TOP 頁(yè)大小*(頁(yè)數(shù)-1) id FROM table1 ORDER BY id
                    )
          ORDER BY id

          方法2:
          適用于 SQL Server 2000/2005
          SELECT TOP 頁(yè)大小 *頁(yè)數(shù)
          FROM table1
          WHERE id >
                    (
                    
          SELECT ISNULL(MAX(id),0
                    FROM 
                          (
                         
          SELECT TOP 頁(yè)大小*(頁(yè)數(shù)-1) id FROM table1 ORDER BY id
                          ) 
          A
                    )
          ORDER BY id

          方法3:
          適用于 SQL Server 2005

          SELECT TOP 頁(yè)大小 * 頁(yè)數(shù)
          FROM 
                  (
                  
          SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* FROM table1
                  ) A
          WHERE RowNumber > 頁(yè)大小*(頁(yè)數(shù)-1)


          說明,頁(yè)大小:每頁(yè)的行數(shù);頁(yè)數(shù):第幾頁(yè)。使用時(shí),請(qǐng)把“頁(yè)大小”和“頁(yè)大小*(頁(yè)數(shù)-1)”替換成數(shù)字。

           

           

           

          其它的方案:如果沒有主鍵,可以用臨時(shí)表,也可以用方案三做,但是效率會(huì)低。
          建議優(yōu)化的時(shí)候,加上主鍵和索引,查詢效率會(huì)提高。

          通過SQL 查詢分析器,顯示比較:我的結(jié)論是:
          分頁(yè)方案二:(利用ID大于多少和SELECT TOP分頁(yè))效率最高,需要拼接SQL語(yǔ)句
          分頁(yè)方案一:(利用Not In和SELECT TOP分頁(yè))   效率次之,需要拼接SQL語(yǔ)句
          分頁(yè)方案三:(利用SQL的游標(biāo)存儲(chǔ)過程分頁(yè))    效率最差,但是最為通用

           

          posted on 2011-11-21 17:12 強(qiáng)強(qiáng) 閱讀(499) 評(píng)論(0)  編輯  收藏 所屬分類: SQLServer


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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 乌恰县| 元阳县| 肥东县| 页游| 柞水县| 陆川县| 白银市| 西和县| 乌兰察布市| 建瓯市| 大英县| 淳安县| 嵩明县| 巴林右旗| 亚东县| 保靖县| 如东县| 兴安盟| 广州市| 原平市| 中卫市| 五指山市| 浮山县| 郸城县| 息烽县| 和林格尔县| 衡山县| 柯坪县| 孟村| 定安县| 墨玉县| 收藏| 阿克苏市| 尤溪县| 阆中市| 洞口县| 高邮市| 宣武区| 云南省| 金门县| 黔南|