实现 JOIN 重写以允许向查询提供子查询结果的正确方法是什么?例如:
SELECT state FROM zips_view WHERE j IN (select j from people_view)
该查询被重写为 SemiJoin,它执行表扫描内部查询(按预期再次选择 _people_view_),然后再次对外部查询进行表扫描(选择 _zips_view_)。第二次扫描可以替换为过滤查询,例如
SELECT state FROM zips_iew WHERE j IN (1,2,3,4)
什么是实现“两阶段”JOIN 的正确方法,它获取子查询的结果并将它们作为过滤器/条件添加到外部查询?