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

          友情鏈接

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 姜堰市| 子洲县| 繁昌县| 大渡口区| 鲁甸县| 涪陵区| 长海县| 民权县| 当雄县| 偏关县| 富阳市| 岳西县| 文登市| 东兴市| 江门市| 开封市| 双牌县| 西林县| 南江县| 明光市| 新巴尔虎右旗| 达孜县| 济源市| 呼伦贝尔市| 上林县| 南开区| 田东县| 青岛市| 旬邑县| 锡林浩特市| 理塘县| 南投市| 河南省| 汕尾市| 富宁县| 龙陵县| 务川| 沙湾县| 镇巴县| 勐海县| 定西市|