【发布时间】:2013-03-01 17:55:07
【问题描述】:
我在少数情况下使用了以下“wapper”来实现分页,并且通常将其称为“标准分页选择”。 因此,要对任何 select 语句的结果进行分页,只需将 select 语句包装在“标准分页选择”中即可。
SELECT * FROM (SELECT a.*, ROWNUM rnum FROM ((
( subquery: put your select * from ....... here ..)
)) a WHERE ROWNUM <= ${resultEnd} )
WHERE rnum >= ${resultStart}
我的问题是关于分页位的行为和 ROWNUM 周围的魔法。据我了解,子查询不每次都选择完整的结果集,并且是 寻找确认或其他方式?
以下是对上面显示的分页行为的正确描述,例如如果页面大小为 50:
选择:
- 第 1 页(例如 0-50)子查询选择 0-50 行
- 第 2 页(例如 51-100)子查询选择 0-100 行(外部查询然后将其限制为 50-100)
- 第 3 页(例如 101-150)子查询选择 0-150 行(外部查询将其限制为 101-150)
- 第 4 页(例如 151-200)子查询选择 0-200 行(外部查询然后将其限制为 151-200)
- 第 5 页(例如 201-250)子查询选择 0-250 行(外部查询然后将其限制为 201-250)
...等等,你可以看到图案。
您越深入“页面”,子查询要做的工作就越多。它是否正确?如果是这样,ROWNUM 如何做到这一点?
提前致谢。并反馈赞赏
【问题讨论】:
-
好 tom kyte 文章:oracle.com/technetwork/issue-archive/2007/07-jan/…
标签: oracle pagination rownum