0
点赞
收藏
分享

微信扫一扫

Oracle Hint(提示)之ORDERED

ORDERED提示的作用和使用方法

ORDERED提示是指导优化器,按照FROM子句中表出现的次序来访问。

ORDERED提示的使用语法如下图所示:

Oracle Hint(提示)之ORDERED_hint

下面,我们通过实验来说明施加该提示时,优化器是如何选择表的访问次序的。

测试验证

首先,我们创建两个测试表TAB1、TAB2:

Oracle Hint(提示)之ORDERED_sql优化_02

并在其上收集统计信息,如下图所示:

Oracle Hint(提示)之ORDERED_sql优化_03

然后我们在其这两个表上执行如下的查询:

select count(*) 
from tab1,tab2
where tab1.object_id=tab2.object_id;

当我们什么提示都不加时,其执行计划如下:

Oracle Hint(提示)之ORDERED_oracle_04

如上图所示,此时是先访问TAB1表,然后才是TAB2表。

下面,我们使用ORDERED提示,让优化器考虑先访问TAB2表。但如前所述,ORDERED提示是指定优化器,按照FROM子句中表出现的次序来访问表。所以,我们需要把TAB2表写到FROM子句中靠前的位置,如下图所示:

Oracle Hint(提示)之ORDERED_ordered_05

如果我们不加ORDERED提示,则表访问的次序,并不是一定接照FROM子句中表出现的次序来访问的。如下图所示:

Oracle Hint(提示)之ORDERED_ordered_06

但是,ORDERED提示,并不会像LEADING提示那样,写多个会导致所有LEADING提示被忽略。如下测试所示:

Oracle Hint(提示)之ORDERED_ordered_07

知识总结

1、ORDERED提示是指导优化器,按FROM子句中表出现的次序来访问。先出现的表,先访问。

参考文档

《Oracle® Database SQL Language Reference》

举报

相关推荐

0 条评论