加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 使用联盟或加入 – 什么是更快

发布时间:2020-12-12 16:41:29 所属栏目:MsSql教程 来源:网络整理
导读:我只是想知道如果你有一张桌子,你们联合起来,那么使用加入会更有效吗? 我知道连接创建更多的列,但这更有理论意义 – 联盟需要对连接进行嵌套循环扫描,就像连接一样吗? 解决方法 Union会更快,因为它只是传递第一个SELECT语句,然后解析第二个SELECT语句,并将
我只是想知道如果你有一张桌子,你们联合起来,那么使用加入会更有效吗?

我知道连接创建更多的列,但这更有理论意义 – 联盟需要对连接进行嵌套循环扫描,就像连接一样吗?

解决方法

Union会更快,因为它只是传递第一个SELECT语句,然后解析第二个SELECT语句,并将结果添加到输出表的末尾.

Join将通过两个表的每一行,在另一个表中查找匹配,因此需要更多的处理,因为每行搜索匹配的行.

编辑

联盟我的意思是联盟All,因为它似乎足够你想要实现的.虽然一般的联盟一般比加盟更快.

编辑2(回复@seebiscuit的评论)

我不同意他的意见.从技术上来说,无论你的加入有多好,“加入”还是比纯粹的连接更昂贵.我做了一个博文,以证明它在我的博客codePERF[dot]net.实际上,他们的服务器2完全不同的目的,更重要的是确保你的索引是正确的,并使用正确的工具的工作.

从技术上来说,我认为可以使用我的博客文章中的以下2个执行计划来总结:

UNION全部执行计划

加盟执行计划

实际成果

实际上,集群索引查找的差异可以忽略不计:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读