我只是想知道你是否有一张桌子并且联合起来会比使用联接更有效吗?
我确实知道联接创建了更多列,但这更具理论性 - 联合是否需要像联接那样对另一个表进行嵌套循环扫描?
Union 会更快,因为它只是传递第一个 SELECT 语句,然后解析第二个 SELECT 语句并将结果添加到输出表的末尾。
连接将遍历两个表的每一行,在另一个表中查找匹配项,因此由于为每一行搜索匹配行,因此需要更多处理。
EDIT
我所说的 Union,是指 Union All,因为它似乎足以满足您想要实现的目标。尽管普通的 Union 通常比 Join 更快。
编辑2(回复@seebiscuit的评论)
我不同意他的观点。从技术上讲,无论您的联接有多好,“联接”仍然比纯串联更昂贵。我在我的博客上发表了一篇博文来证明这一点代码PERF[dot]net http://www.codeperf.net/sql-union-vs-join-performance/。实际上,它们有两个完全不同的目的,更重要的是确保您的索引正确并使用正确的工具来完成工作。
从技术上讲,我认为可以使用我的博客文章中的以下两个执行计划来总结:
UNION ALL
执行计划
JOIN
执行计划
实际结果
实际上,聚集索引查找的差异可以忽略不计:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)