oracle有个效率很不错的分页查询方式:
SELECT * FROM
(
SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A
WHERE ROWNUM <= 40
)
WHERE RN >= 21这种查询方式,第二层的查询条件WHERE ROWNUM <= 40就可以被Oracle推入到内层查询中,这样Oracle查询的结果一旦超过了ROWNUM限制条件,就终止查询将结果返回了。但如果我还要得到总数就无法实现了,大家有没有什么方法可以在保证效率的同时还能得到总数,最好不用两条sql语句
SELECT * FROM
(
SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A
WHERE ROWNUM <= 40
)
WHERE RN >= 21这种查询方式,第二层的查询条件WHERE ROWNUM <= 40就可以被Oracle推入到内层查询中,这样Oracle查询的结果一旦超过了ROWNUM限制条件,就终止查询将结果返回了。但如果我还要得到总数就无法实现了,大家有没有什么方法可以在保证效率的同时还能得到总数,最好不用两条sql语句
解决方案 »
- 一个号码段分组问题
- 请问一个启动sqlplus的问题.
- oracle建立了两个sql server链接,已测试成功,但怎么将一个链接的表插入到另一个链接表呢?
- 系统的回滚表空间坏了,要怎么才能重建一个新的回滚表空间
- 如何对oracle查询进行某些CHAR字段进行排序呢?
- 触发器问题!在触发的表里更新字段
- 大哥大姐们帮忙啊!急急!!
- 特简单的菜鸟问题:这个MS SQL触发器转到oracle该怎么写呢
- 在ORACLE里计算增长量,增长率这样的问题有无通用的一个方法?
- 在Linux中连接远程oracle数据库?Sqoop2用法?
- 十万条记录,求高效更新SQL
- 请问:Ado.net 能访问 Oracle Spatial 中的数据吗?
(
SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A
WHERE ROWNUM <= (3+1)*N
)
WHERE RN >= N*3