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 閱讀(484) 評論(0)  編輯  收藏 所屬分類: Database (oracle, sqlser,MYSQL)

          導航

          統計

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          收藏夾

          Hibernate

          友情鏈接

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 夏津县| 青田县| 海林市| 杭锦后旗| 隆回县| 祁阳县| 灯塔市| 新民市| 佛坪县| 巴马| 开鲁县| 兴隆县| 土默特右旗| 石景山区| 恩施市| 贵阳市| 五指山市| 沅陵县| 朝阳市| 晋州市| 囊谦县| 揭东县| 和田市| 桂阳县| 休宁县| 乡城县| 开原市| 上杭县| 锡林郭勒盟| 平乡县| 汤阴县| 皋兰县| 汶上县| 鹤山市| 昌江| 哈密市| 安岳县| 修文县| 清水县| 宁都县| 宜兴市|