SELECT * FROM
(
SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A
WHERE ROWNUM <= 40
)
WHERE RN >= 21
像这种分页是最常见的 取数据量小的时候 分页效率还是相当高的
但是当 WHERE ROWNUM <= 40
到了100w 以上效率逐渐降低 而且是数据量越大效率越低..我希望谁能拿出解决方案来
解决方案 »
- oracle 8.1.7 误删除一些表的数据后,如何恢复?求高手解答
- 请教一个关于流水号的存储过程
- 求ORACLE APEX中文使用说明
- 创建视图错误 00905!
- 如何去除表中的备注
- 把数据从sqlserver导入到oracle后产生的严重问题。
- 表UA.TA和UB.TB,由于是两个用户的表,问怎样给他们授权才能够建立外键
- 初学者向各位老师请教几个关于Oracle SQL*Plus问题!本人不甚感激,希望各位高人指点指点。有兴趣的进来看看!大家共同进步。谢谢!!
- P4的机器为什么不能装ORACLE8i???
- 关于oracle同步复制的问题
- oracle xmldb 信息库 问题!
- 求高手帮忙看下这短SQL
1,利用rownum
2,分析函数row_number()over() 1.
select from(
select t.*,rownum rn from(
select * from a
order by col1)t
where rn between 101 and 200)
2.
select *
from(select t.*,row_number()over(order by col1)rn
from t)
where rn between 101 and 200
row_number()和ROWNUM是看起来相似但概念完全不同的东西,
row_number()是一个分析函数(Analytic Function),它返回的是基于over()参数的行号。 rownum是oracle特别提供的一个伪列,它只作用于查询的结果集,根据结果集输出的先后次序给每个纪录顺次编号。 row_number() 要比rownum 高很多. 对一大表测试时, row_number() 用时6s,rownum 用时 17s.
------------------------------------------------------------------------------
Blog: http://blog.csdn.net/tianlesoftware
网上资源: http://tianlesoftware.download.csdn.net
相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
Q Q 群:62697716
数据量越大效率越低,这是肯定的
试试
SELECT * FROM
(
SELECT A.*, ROW_NUMBER()OVER(ORDER BY colname) RN
FROM TABLE_NAME A
)
WHERE RN >= 21 AND RN<=40看看效率会不会高一点
如果可以的话,考虑增加一个排序字段,这样的话能大大提高性能
狂浪 回来了啊.. ------------------------------------------------------------------------------
Blog: http://blog.csdn.net/tianlesoftware
网上资源: http://tianlesoftware.download.csdn.net
相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
Q Q 群:62697716
1,利用rownum
2,分析函数row_number()over()