
1、oracle分页查询:
SELECT * FROM
(选择A *,rownum rn从
(从选项卡A中选择*)
在rownum <= 40)
其中RN = 21;
此分页比下面的分页效率低,效率更高。
二
SELECT * FROM
(选择C *,rownum RN从标签C)在21和40之间的RN
在对比了这两种方法,在大多数情况下,第一个查询比二更有效。这是由于CBO优化模型,Oracle可以把外层的查询条件,内部查询,以提高对内部查询的执行效率。为第一查询,查询哪里rownum二层40可以推到Oracle查询的内层,Oracle查询的结果一旦超过rownum的限制,对查询的终止将返回结果。
第二个查询语句是由于21层和40层之间的查询条件存在于第三个查询级别上的,即使是将它推到最内层,Oracle也不能将第三层查询条件推到最内层,因为最内层查询不知道RN代表什么,因此,对于第二查询语句,
对于所有满意的数据,Oracle内层返回到中间层,中间层返回到最外层以及所有的数据,数据的过滤在最外层完成。
很明显,这个效率比第一个低得多。
上面的查询不仅是对单个表的简单查询,而且也是对最内层查询的查询,它与多表联合查询或最内层查询一样复杂。
三.下面是对多表联合的简单讨论。对于最常见的表连接查询,CBO一般可以使用两个连接。
嵌套循环和散列连接(合并连接效率比哈希连接效率低,一般不会考虑CBO)。
这里,由于使用分页,指定了返回的最大记录数,嵌套循环将返回记录数大于最大值。
您可以立即停止并将结果返回到中间层,哈希连接必须完成所有结果集(合并联接也是)。
因此,在大多数情况下,Oracle分页查询嵌套循环的选择作为查询的连接方法是非常有效的。
(分页查询的大部分情况是查询数据的上一页,页面后面的页数越多)。
选择 / * + first_rows * / * ---提示提示,查询优化
(选择A *,rownum rn从
(从选项卡A中选择*)
在rownum <= 400)
其中RN = 380
如果您有任何问题,请在本站留言或与社区交谈。谢谢你的阅读。我希望你能帮助你。感谢您对本站的支持。