gdufo

           

          ORACLE分頁查詢SQL語法


          --1:無ORDER BY排序的寫法。(效率最高)

          --(經過測試,此方法成本最低,只嵌套一層,速度最快!即使查詢的數據量再大,也幾乎不受影響,速度依然!)
          SELECT *
            FROM (Select ROWNUM AS ROWNO, T.*
                     from k_task T
                    where Flight_date between to_date('20060501', 'yyyymmdd') and
                          to_date('20060731', 'yyyymmdd')
                      AND ROWNUM <= 20) TABLE_ALIAS
          WHERE TABLE_ALIAS.ROWNO >= 10;

          --2:有ORDER BY排序的寫法。(效率最高)
          --(經過測試,此方法隨著查詢范圍的擴大,速度也會越來越慢哦!)
          SELECT *
            FROM (SELECT TT.*, ROWNUM AS ROWNO
                     FROM (Select t.*
                              from k_task T
                             where flight_date between to_date('20060501', 'yyyymmdd') and
                                   to_date('20060531', 'yyyymmdd')
                             ORDER BY FACT_UP_TIME, flight_no) TT
                    WHERE ROWNUM <= 20) TABLE_ALIAS
          where TABLE_ALIAS.rowno >= 10;

          --3:無ORDER BY排序的寫法。(建議使用方法1代替)
          --(此方法隨著查詢數據量的擴張,速度會越來越慢哦!)
          SELECT *
            FROM (Select ROWNUM AS ROWNO, T.*
                     from k_task T
                    where Flight_date between to_date('20060501', 'yyyymmdd') and
                          to_date('20060731', 'yyyymmdd')) TABLE_ALIAS
          WHERE TABLE_ALIAS.ROWNO <= 20
             AND TABLE_ALIAS.ROWNO >= 10;
          --TABLE_ALIAS.ROWNO  between 10 and 100;

          --4:有ORDER BY排序的寫法.(建議使用方法2代替)
          --(此方法隨著查詢范圍的擴大,速度會越來越慢哦!)
          SELECT *
            FROM (SELECT TT.*, ROWNUM AS ROWNO
                     FROM (Select *
                              from k_task T
                             where flight_date between to_date('20060501', 'yyyymmdd') and
                                   to_date('20060531', 'yyyymmdd')
                             ORDER BY FACT_UP_TIME, flight_no) TT) TABLE_ALIAS
          where TABLE_ALIAS.rowno BETWEEN 10 AND 20;


          --5另類語法。(有ORDER BY寫法)
          --(語法風格與傳統的SQL語法不同,不方便閱讀與理解,為規范與統一標準,不推薦使用。)
          With partdata as(
            SELECT ROWNUM AS ROWNO, TT.*  FROM (Select *
                            from k_task T
                           where flight_date between to_date('20060501', 'yyyymmdd') and
                                 to_date('20060531', 'yyyymmdd')
                           ORDER BY FACT_UP_TIME, flight_no) TT
             WHERE ROWNUM <= 20)
              Select * from partdata where rowno >= 10;

          --6另類語法 。(無ORDER BY寫法)
          With partdata as(
            Select ROWNUM AS ROWNO, T.*
              From K_task T
             where Flight_date between to_date('20060501', 'yyyymmdd') and
                   To_date('20060531', 'yyyymmdd')
               AND ROWNUM <= 20)
              Select * from partdata where Rowno >= 10;   

          posted on 2012-06-16 22:17 gdufo 閱讀(487) 評論(0)  編輯  收藏 所屬分類: Database (oracle, sqlser,MYSQL)

          導航

          統計

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          收藏夾

          Hibernate

          友情鏈接

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 阜康市| 紫金县| 左云县| 武汉市| 大田县| 新兴县| 海淀区| 股票| 西乌珠穆沁旗| 临澧县| 镇远县| 永善县| 芷江| 佛坪县| 嘉义县| 台江县| 安福县| 宣化县| 定边县| 桐乡市| 亚东县| 马山县| 方山县| 京山县| 福海县| 盖州市| 浦北县| 裕民县| 敖汉旗| 舒城县| 长葛市| 玛曲县| 龙游县| 偃师市| 民县| 长汀县| 桂阳县| 固始县| 靖江市| 含山县| 上栗县|