zoukankan      html  css  js  c++  java
  • Oracle的分页查询

    --1:无ORDER BY排序的写法。(效率最高)
    --(经过测试,此方法成本最低,只嵌套一层,速度最快!即使查询的数据量再大,也几乎不受影响,速度依然!)

    SELECT *
      FROM (SELECT ROWNUM AS rowno, t.*
              FROM emp t
             WHERE hire_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 emp t
                       WHERE hire_date BETWEEN TO_DATE ('20060501', 'yyyymmdd')
                                           AND TO_DATE ('20060731', 'yyyymmdd')
                    ORDER BY create_time DESC, emp_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;

     

  • 相关阅读:
    GitHub 集成在Windows Azure Web Site中
    WebMatrix 2发布了!添加了新的Windows Azure 功能
    客户文章: 10gen和微软合作伙伴在云端提供NoSql数据库
    VC++实现IP与ARP信息获取,可以同理实现APR攻击
    现实世界中的 Windows Azure: 刚刚起步的LiquidSpace借助Windows Azure快速发展
    VC++实现遍历所有进程的TCP与UDP链接
    Node.js 体验存储服务和服务运行时
    客户文章:Windows Azure SendGrid入门
    2005年大学毕业生的求职新战略
    WinAPI: RoundRect 绘制圆角矩形
  • 原文地址:https://www.cnblogs.com/tingbogiu/p/5703529.html
Copyright © 2011-2022 走看看