gpt4 book ai didi

sql-server - 为什么只有索引扫描,RID 在哪里?

转载 作者:行者123 更新时间:2023-12-02 08:11:15 28 4
gpt4 key购买 nike

我有一项任务是建议对查询执行计划进行一些改进。该表是:

CREATE TABLE [Contracts] (  [ContractId] [int] NOT NULL  
, [ContractNumber] [varchar](50) NOT NULL
, [SignDate] [datetime2](7) NULL
, [EndDate] [datetime2](7) NULL
, CONSTRAINT [PK_con_Contracts] PRIMARY KEY CLUSTERED ([ContractId] ASC) );

CREATE INDEX IX_con_Contracts_ContractNumber ON [Contracts] (ContractNumber) INCLUDE (SignDate)

我做的一些值(value)观:

INSERT INTO Contracts VALUES (1,'12340','2017-10-02','2017-11-02')  
INSERT INTO Contracts VALUES (2,'12341','2017-10-02','2017-11-02')
INSERT INTO Contracts VALUES (3,'12342','2017-10-02','2017-11-02')
INSERT INTO Contracts VALUES (4,'12343','2017-10-02','2017-11-02')

现在我正在对其运行查询:

SELECT ContractId  
, ContractNumber
, SignDate FROM Contracts
WHERE ContractNumber = 12340

所有这些都是对非聚集索引的扫描。但是怎么会呢?该索引不包括我在输出中需要的所有列。我认为会有一些 RID 运算符从 antoher 结构中获取列。

enter image description here

最佳答案

非堆表上的非聚集索引存储聚集键列以启用查找。此处,聚集键在 ContractId 上,索引在 ContractNumber 上并包括 SignDate - 因此该索引确实包括满足查询。

关于sql-server - 为什么只有索引扫描,RID 在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46845414/

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