首页
学习
活动
专区
工具
TVP
发布

rownum应用系列之分页查询

rownum这个伪列在SQL中用途广泛,归纳起来大致有3总用法: 1、分页查询 rownum:b2 (rownum不能>) 2、rownum<= :b1 3、rownum=...1 或 rownum<=1 ,也是rownum<=:b1的一种特例 我们接下来分别会找相关的优化案例来进行分析。...今天先谈谈简单的分页查询写法,虽然是老生常谈,但是因为在很多客户的大型系统中都发现了低效写法,还是再重新加强一下,如果能做成开发规范最好: 低效的写法: select column_lists from...一般分页查询访问前面部分页面的几率较大,内层查询的结果集越大,性能差距越明显。 如果是访问分页的最后部分的页面,基本上就没什么差别了。...当前的主流写法还是上面使用rownum伪列的方法。 思考一下: 这样的分页查询语句,应该创建怎样的索引?

76120
您找到你想要的搜索结果了吗?
是的
没有找到

Oracle 分页查询

本文使用到的是oracle数据库scott方案所带的表,scott是oracle数据库自带的方案,使用前请确保其解锁 Oracle分页一共有三种 1、使用rownum配合子查询进行分页 rownum是一种伪列...a、利用查询需要进行分页的结果集,然后根据然会的结果集生成rownum select rownum,a.* from (select * from emp) a 左图红框内的结果集是rownum生成的行序号...rownum的别名,正确的简单分页如下: select * from (select rownum rn,a.* from (select * from emp) a where rownum<=10...rownum<=10) where rn>=6 这样改将分页的过程和要查询字段糅合在一起了,相当于将这个sql写死了,只能查全部或者特定几个字段,而且如果这边的查询需要根据某个字段进行排序,这边更是无法处理...c、第一种分页方式的终极版 上面讲完分页的基本过程后,现在我们将上面的过程封装成包内的存储过程,方便外部调用。并将上面的查询和游标相结合,提高查询的效率。

2.9K80

三种数据库sql分页查询

关于sql分页 今天用到分页了顺便就总结了一下 mysql 数据库: mysql 中有分页的关键字limit,它可以实现分页很简单; SELECT * FROM sys_user ORDER BY userid...LIMIT startNo,total; startNo 是查询开始的行数,total 是要查询出多少条; sql server2005 数据库: sql server 实现分页有两种方式可以实现...pid from person_base order by pid) order by pid 根据别人测试的数据显示第二种方法比第一种方法效率要高 Oracle 数据库: Oracle 实现分页需要用到伪列...rownum select * from (select *,rownum rno from person_base where rownum < = (pageNo * pageSize)) x where...1.rownum的特性(没有1就不会有2,没有3……以此类推下去)决定的 rownum只能从1开始 2.使用rownum进行排序的时候是先对结果集加入伪列rownum然后再进行排序,而函数row_number

54030

Oracle 分页查询与数据去重深入理解

分页查询格式: SELECT *   FROM (SELECT a.*, ROWNUM rn           FROM (SELECT *                   FROM table_name...ROWNUM = 21控制分页查询的每页的范围。 上面给出的这个分页查询语句,在大多数情况拥有较高的效率。分页的目的就是控制输出结果集大小,将结果尽快的返回。...在上面的分页查询语句中,这种考虑主要体现在WHERE ROWNUM <= 40这句上。...而另一种方式是去掉查询第二层的WHERE ROWNUM <= 40语句,在查询的最外层控制分页的最小值和最大值。...因此,如果不介意在系统中使用HINT的话,可以将分页的查询语句改写为: SELECT *   FROM (SELECT a.*, ROWNUM rn           FROM (SELECT *

86320
领券