我只是想知道如果你有一张桌子,你们联合起来,那么使用加入会更有效吗?
我知道连接创建更多的列,但这更有理论意义 – 联盟需要对连接进行嵌套循环扫描,就像连接一样吗?
解决方法
Union会更快,因为它只是传递第一个SELECT语句,然后解析第二个SELECT语句,并将结果添加到输出表的末尾.
Join将通过两个表的每一行,在另一个表中查找匹配,因此需要更多的处理,因为每行搜索匹配的行.
编辑
联盟我的意思是联盟All,因为它似乎足够你想要实现的.虽然一般的联盟一般比加盟更快.
我不同意他的意见.从技术上来说,无论你的加入有多好,“加入”还是比纯粹的连接更昂贵.我做了一个博文,以证明它在我的博客codePERF[dot]net.实际上,他们的服务器2完全不同的目的,更重要的是确保你的索引是正确的,并使用正确的工具的工作.
从技术上来说,我认为可以使用我的博客文章中的以下2个执行计划来总结:
UNION全部执行计划
加盟执行计划
实际成果
实际上,集群索引查找的差异可以忽略不计:
@L_404_3@