存在性判定谓词中的子查询改写小记

在溪峰老师的 OceanBase 改写系列二: 子查询提升首篇 中,对另外的一种子查询形式:存在判定性谓词的子查询 进行了介绍,主要的改写原则为:将存在性判定谓词中的子查询改写成 SEMI/ANTI JOIN 的策略。

判定性谓词可以说是很常见的语法了,最常见的就是EXISTS/NOT EXISTS,这种子查询与聚合子查询不同,返回的通常为一个集合,所以常将这种子查询提升为 SEMI或ANTI JOIN。提升的最大好处在于可以让优化器选择更丰富的连接算法~