hint2

本文介绍了SQL执行计划中几种hint的使用方法,包括push_subq、merge/no_merge、push_pred/no_push_pred等,通过调整这些hint可以改变子查询的执行顺序、连接方式,从而优化查询效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

5、 push_subq
这个hint的作用是将nonmerged子查询的执行顺序提前(一般来说,nonmerged子查询的执行顺序比较靠后)。且看下面两个语句执行计划的差别:
由于子查询返回的结果集非常小,所以先和test1进行连接更合理。
6、 merge/no_merge
这两个hint和另外两个hint push_pred/no_ push_pred应用场景很接近,都是用来控制和view(包括视图和子查询)的连接行为。见下面两个语句的执行计划:
前一个先生成子查询结果集,再和t1进行关联,后一个则直接进行关联,也就是连接的时机有所不同。
7、 push_pred/no_ push_pred
push_pred是把连接谓词push到view里,见下面语句的执行计划:
猜测:push_pred会导致表连接一定是走nested loop的。
8、 use_concat/ no_expand
这两个hint比较容易理解,use_concat就是将含有or操作符的查询转换成多块进行查询,然后做个concatenation。no_expand则与use_concat相对。
9、 merge_aj/hash_aj/nl_aj/merge_sj /hash_sj/ nl_sj
这几个是undocumented hint,其中后缀aj表示anti join,主要用于not exists和not in;后缀sj表示semi join,主要用于exists和in。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8367589/viewspace-730121/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8367589/viewspace-730121/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值