Oracle hint

1、use_concat

网上说法:

CONCATENATION和UNION/UNION ALL操作比较类似,根据OR查询条件,将一个查询分解为两个或更多的部分,然后在去掉两个部分重复的记录。由于CONCATENATION执行计划需要去掉重复的记录,因此和UNION ALL不同。和UNION也不同的是,这个执行计划并不会去掉所有的重复记录,而只是CONCATENATION包含两个子查询之间重复的记录被过滤掉。10g中,这个执行计划和提示已经是为了后向兼容而保留了,可以看到,默认情况下,就是使用CONCATENATION执行计划的COST更低,Oracle也不会选择这种执行计划;

对于or子查询句式,如果使用use_concat无效,可以尝试使用/* +use_concat(or_predicates(1))*/

与use_concat相反的是no_expand

参考: http://blog.itpub.net/267265/viewspace-1788598/

原文地址:https://www.cnblogs.com/mellowsmile/p/5149819.html