当需要在网站中进行分页时...哪种方法性能更好?
分析函数 - 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;
行号
- 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:要检索我正在考虑使用单独的简单查询计数的记录总数(*)