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

sql-server – 执行计划基础 – 哈希匹配混乱

发布时间:2020-12-25 01:41:02 所属栏目:MsSql教程 来源:网络整理
导读:我开始学习执行计划,并且对哈希匹配的确切工作原理以及为什么在简单连接中使用它感到困惑: select Posts.Title,Users.DisplayNameFrom Posts JOIN Users onPosts.OwnerUserId = Users.IdOPTION (MAXDOP 1) 据我所知,Top索引扫描的结果变为哈希能力,并且查

我开始学习执行计划,并且对哈希匹配的确切工作原理以及为什么在简单连接中使用它感到困惑:

select Posts.Title,Users.DisplayName
From Posts JOIN Users on
Posts.OwnerUserId = Users.Id
OPTION (MAXDOP 1)

据我所知,Top索引扫描的结果变为哈希能力,并且查找底部索引聚类扫描中的每一行.我理解哈希表至少在某种程度上是如何工作的,但是我很困惑在这样的例子中哪些值正好被哈希处理.

让我有意义的是,他们之间的共同领域,id,是哈希 – 但如果是这样的话,为什么要哈希一个数字呢?

解决方法

正如SQLRockstar的回答引用

best for large,unsorted inputs.

现在,

>从Users.DisplayName索引扫描(假设为非聚集),您获得Users.Id(假设已聚集)=未排序
>您还扫描OwnerUserId =未分类的帖子

这是2个无序输入.

我会在OwnerUserId上的Posts表上考虑一个索引,包括Title.这将在JOIN的输入的一侧添加一些顺序,它将覆盖索引

CREATE INDEX IX_OwnerUserId ON Posts (OwnerUserId) INCLUDE (Title)

然后,您可能会发现不会使用Users.DisplayName索引,而是会扫描PK.

(编辑:江门站长网)

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

    热点阅读