gpt4 book ai didi

sql - 为什么非聚集索引列仍然进行索引扫描而不是索引查找

转载 作者:行者123 更新时间:2023-12-05 07:43:55 26 4
gpt4 key购买 nike

我有以下表格

EmployeePatientLink

Id nvarchar(128) PK & clustered index
PatientId nvarchar(128) FK NULL -- nonclustered index created
EmployeeId int NULL-- nonclustered index created.

患者

Id nvarchar(128) PK & clustered index
Id PK & clustered Index -- this links to above table

PatientSchedule

PatientId nvarchar(128) NULL -- 已创建非聚集索引

和这个查询

select 
Id, PatientId
from
PatientSchedule ps
Inner join
EmployeePatientLink ep on ps.PatientId = ep.PatientId
where ep.EmployeeId=1111

我确实有类似上述的查询,其他人在执行计划和嵌套循环连接中执行索引查找。

然而,这个总是包括 Merge Join 和 Sort and Index 扫描。

我想我创建了足够的索引,一切都井井有条,应该进行索引查找。

查询优化器选择索引查找是否有特定原因?

最佳答案

尝试使用包含的列创建索引以避免“键查找”(SQL Server 需要在找到 EmployeeId 时搜索 PatientId 值)

CREATE INDEX IX_EmployeePatientLink_EmployeeId ON EmployeePatientLink(EmployeeId) 
INCLUDE (PatientId)

关于sql - 为什么非聚集索引列仍然进行索引扫描而不是索引查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43255248/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com