semi/anti join cache

之前写过一篇标量子查询缓存http://www.minniebaby.tech/2024/12/21/oracle-scalar-subquery-caching/

描述了标量子查询或者filter在执行时,会使用”_query_execution_cache_max_size”对外表关联列进行缓存,避免重复多余的扫描内表,具体原理参考之前的文章,这里就不描述了,本文的主要内容是验证对于subquery unnest之后的semi/anti join是否适用。

ANTI:

可以发现anti join也是存在cache的。关闭_query_execution_cache_max_size,发现anti join cache不起作用了,说明该参数对于anti join同样适用。

semi join这里就不测试了,应该也是可以的。

总结一下:

_query_execution_cache_max_size参数主要控制subquery执行中,对于重复的关联列如果之前执行过并且cache住了就无需再执行内表SEMI/ANTI匹配了,经过测试对于子查询基本都适用。

适用场景:

  • 标量子查询
  • FILTER
  • SEMI/ANTI

 

 

 

 

 

此条目发表在Oracle, Oralce performance分类目录,贴了, , 标签。将固定链接加入收藏夹。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注