oracle分页查询的详细解决方案

oracle分页查询的详细解决方案
oracle分页查询的详细解决方案

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

如果您有任何问题,请在本站留言或与社区交谈。谢谢你的阅读。我希望你能帮助你。感谢您对本站的支持。

tag:解决方案分页查询详细电脑软件Oracle

相关内容