JAVA—咖啡館

          ——歡迎訪問rogerfan的博客,常來《JAVA——咖啡館》坐坐,喝杯濃香的咖啡,彼此探討一下JAVA技術,交流工作經驗,分享JAVA帶來的快樂!本網站部分轉載文章,如果有版權問題請與我聯系。

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            447 Posts :: 145 Stories :: 368 Comments :: 0 Trackbacks
          方法1:
          適用于 SQL Server 2000/2005
          SELECT TOP 頁大小 *
          FROM table1
          WHERE id NOT IN
                    (
                    SELECT TOP 頁大小*(頁數-1) id FROM table1 ORDER BY id
                    )
          ORDER BY id
          方法2:
          適用于 SQL Server 2000/2005
          SELECT TOP 頁大小 *
          FROM table1
          WHERE id >
                    (
                    SELECT ISNULL(MAX(id),0)
                    FROM
                          (
                          SELECT TOP 頁大小*(頁數-1) id FROM table1 ORDER BY id
                          ) A
                    )
          ORDER BY id
          方法3:
          適用于 SQL Server 2005
          SELECT TOP 頁大小 *
          FROM
                  (
                  SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* FROM table1
                  ) A
          WHERE RowNumber > 頁大小*(頁數-1)

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

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

          通過SQL 查詢分析器,顯示比較:我的結論是:
          分頁方案二:(利用ID大于多少和SELECT TOP分頁)效率最高,需要拼接SQL語句
          分頁方案一:(利用Not In和SELECT TOP分頁)   效率次之,需要拼接SQL語句
          分頁方案三:(利用SQL的游標存儲過程分頁)    效率最差,但是最為通用
          posted on 2010-04-30 10:26 rogerfan 閱讀(1184) 評論(0)  編輯  收藏 所屬分類: 【數據庫】
          主站蜘蛛池模板: 白水县| 镇赉县| 丰原市| 濉溪县| 鸡西市| 横山县| 周宁县| 伊吾县| 武强县| 集安市| 孝昌县| 舞阳县| 和静县| 淳化县| 永胜县| 翁源县| 双峰县| 巢湖市| 灵璧县| 吐鲁番市| 阜平县| 萨嘎县| 竹山县| 高尔夫| 会理县| 武义县| 孟村| 湖州市| 新宾| 鄱阳县| 中卫市| 丹江口市| 娱乐| 武强县| 金湖县| 光泽县| 信阳市| 英德市| 楚雄市| 阿合奇县| 扶余县|