对于如下的SQL:
select * from Country
where Country.code IN (select City.Country
from City
where City.Population > 1*1000*1000)
and Country.continent='Europe'
假设我们想要查找拥有100万人口城市的欧洲国家,常规的inner join执行计划看起来像下面这样:
由于德国有两个大城市(在这个图中), 它将在查询输出中输出两次,这是不正确的。SELECT ... FROM Country不应该产生同一个国家两次,FirstMatch策略当发现第一个满足行发现后中止匹配来避免产生重复的输出,
注意“中止”在“使用where”后应用的,如果我们发现候选后就执行中止时不正确的。
Posted in: MySQL practise | Tags: FirstMatch策略, MySQL, Semi Join
Comments are closed.