当需要在网站中完成寻呼...哪种方法执行得更好?解析函数ROW_NUMBER()VS ROWNUMBER - Oracle Paging
解析功能 - ROW_NUMBER()
- 甲骨文10G
http://www.oracle.com/technetwork/issue-archive/2007/07-jan/o17asktom-093877.html
SELECT columnA, columnB FROM (SELECT columnA, columnB, row_number() over (order by columnB) rn FROM table) WHERE rn BETWEEN LOW_LIMIT AND OFFSET;
ROWNUMBER
- http://www.oracle.com/technetwork/issue-archive/2007/07-jan/o56asktom-086197.html
INMHO我发现这种方法更可读的代码
SELECT * FROM ( SELECT rownum rn, a.* FROM( SELECT columnA, columnB FROM table ORDER BY columnB ) a WHERE rn <= OFFSET ) WHERE rnum >= LOW_LIMIT
注:据我所知,有RANK和DENSE_RANK解析函数,但是让我们假设我只需要网页通过确定性查询。
注2:要检索的记录,我在使用一个单独的简单查询COUNT(*)
多少行,你处理?你有没有检查解释计划? – Chandu
可能的重复[如何加快Oracle中的row_number?](http://stackoverflow.com/questions/827108/how-can-i-speed-up-row-number-in-oracle) –
尝试加载一个测试表中包含大量数据并对它们进行测试,瞧,你的答案直接针对你正在运行的硬件/网络/环境定制(由于你自己进行测试的结果)。 – Ollie