我在少数情况下使用了以下“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 如何做到这一点?
提前致谢。并反馈赞赏