zoukankan      html  css  js  c++  java
  • oracle简单的分页查询语句

    方式1:

    SELECT * 
    FROM ( SELECT A.*, ROWNUM RN 
                FROM (SELECT * FROM TABLE_NAME) A 
                WHERE ROWNUM <= 40 ) 
    WHERE RN >= 21

    方式2:

    SELECT * 
    FROM ( SELECT A.*, ROWNUM RN 
                FROM (SELECT * FROM TABLE_NAME) A ) 
    WHERE RN BETWEEN 21 AND 40

    绝大多数的情况下,第一个查询的效率比第二个高得多。 

    这是由于Oracle可以将外层的查询条件推到内层查询中,以提高内层查询的执行效率。

    对于第一个查询语句,第二层的查询条件就可以被Oracle推入到内层查询中,这样Oracle查询的结果一旦超过了限制条件,就终止查询将结果返回了。

    而第二个查询语句,由于查询条件是存在于查询的最外层,而Oracle无法将最外层的查询条件推到最内层

    因此,对于第二个查询语句,Oracle最内层返回给中间层的是所有满足条件的数据,而中间层返回给最外层的也是所有数据。

    数据的过滤在最外层完成,显然这个效率要比第一个查询低得多。

  • 相关阅读:
    mybatis-plus 插件
    mybatis-plus 逆向工程模板
    mybatis-plus 使用
    response.getWriter()
    String.length()和String.getBytes().length
    mybatis 中有趣的符号#与$
    html动画实现
    把我坑惨的一个update语句
    我们为什么不用 Select * 吗?
    Java 正则表达式
  • 原文地址:https://www.cnblogs.com/yangsoon/p/7698274.html
Copyright © 2011-2022 走看看