Oracle 分页查询模板
来源:互联网 发布:摄影后期软件 编辑:程序博客网 时间:2024/06/05 02:20
Oracle分页查询方法一共有三种:
一、rowid效率最高
二、分析函数效率最差
三、ROWNUM
这里只说第三种,因为我认为第三种可读性比较高,效率也比较好,大约比第一种效率差一到二倍,和第二种相比快一个数量级。
SELECT * FROM (SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM <= 40)WHERE RN >= 21
这个SQL我们可以当一个模板,只需要修改table_name,40,21就可以了。
有几个要注意的地方说下:
①rownum<=40为什么不加上外层的>=21?大家可以试一下rownum<=40 and rownum>=21,是查不出结果的,在这一层select中rownum只能用一次;或者rownum<=40 and Rn>=21,内层循环不能识别RN;
②为什么不用betwwen?用 RN betwwen 21 and 40 效率比较低,内层循环返回给外层的都是全量数据,而第一种子查询是由于CBO优化模式下,Oracle可以将外层的查询条件推到内层查询中,以提高内层查询的执行效率。对于第一个查询语句,第二层的查询条件WHERE ROWNUM <= 40就可以被Oracle推入到内层查询中,这样Oracle查询的结果一旦超过了ROWNUM限制条件,就终止查询将结果返回了;
③这个可以当做模板,我们只需要修改内层循环就可以达到大部分的要求,例如换表只需要修改最内层子查询的表名,排序也只需要在最内层子查询加排序条件
SELECT * FROM (SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE2 order by column2 desc) A WHERE ROWNUM <= 40)WHERE RN >= 21
0 0
- Oracle 分页查询模板
- oracle的分页查询模板
- Oracle分页查询的SQL模板
- oracle Oracle分页查询
- oracle 数据分页查询
- Oracle分页查询语句
- oracle分页查询
- Oracle分页查询语句
- Oracle分页查询语句
- Oracle分页查询语句
- Oracle的分页查询
- oracle分页查询
- Oracle分页查询
- oracle 分页查询
- Oracle的分页查询
- oracle分页查询
- Oracle分页查询语句
- ORACLE分页查询
- 动态对象创建(new/delete & malloc/free)
- 火车头采集器 页面图片等信息采集
- 我写的js俄罗斯方块,求助一下,重新开始游戏如何解决的啊,现在用的是刷新
- PHP自学no00007数据类型字符串型之界定符
- python实现HTTP 请求
- Oracle 分页查询模板
- java.Servlet.GenericServlet中的init方法
- Activity1进入Activity2,Activity2开启Activity3,需要Activity3直接返回数据给Activity1
- Oracle 11g之LogMiner简介
- LeetCode LeetCode 186 - Reverse Words in a String II
- 查看端口是否被占用(无法启动adb)
- EventBus的使用与深入学习
- Mob社交分享 ShareSDK 界面中文化的方法
- 《java入门第一季》之面向对象面试题(fianl关键字)