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;

     

  • 相关阅读:
    博客新域名www.tecchen.tech
    [转载]Redis 持久化之RDB和AOF
    基于zookeeper集群的云平台-配置中心的功能设计
    22部漫威电影大合集和观影顺序
    类的嵌套定义、使用以及用头文件实现多个文件编程(匠心之作C++ p105 22 )
    Python的print格式
    Tensorflow2.0+Anaconda + Windows10+cuda10.0+python(转自豌豆代理)
    C语言中用scanf连续输入两个字符类型的问题(转)
    算法和流程图(及N-S流程图)
    git的安装及针对码云的操作(二)
  • 原文地址:https://www.cnblogs.com/tingbogiu/p/5703529.html
Copyright © 2011-2022 走看看