您的位置:首页 > 数据库 > Oracle

oracle简单的分页查询语句

2017-10-20 10:40 375 查看
方式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最内层返回给中间层的是所有满足条件的数据,而中间层返回给最外层的也是所有数据。

数据的过滤在最外层完成,显然这个效率要比第一个查询低得多。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: