假设我有一张这样的桌子。Id 是主键,所以我知道我得到了一个索引。
CREATE TABLE Employer
(
Id VARCHAR(64) NOT NULL,
EntityId VARCHAR(64) NOT NULL,
Name VARCHAR(64) NOT NULL,
Address1 VARCHAR(64) NOT NULL,
Address2 VARCHAR(64) NOT NULL,
City VARCHAR(64) NOT NULL,
JobTitle VARCHAR(64) NOT NULL,
StateCode VARCHAR(64) NOT NULL,
ZipCode VARCHAR(64) NOT NULL,
CONSTRAINT PK_Employer_Id PRIMARY KEY CLUSTERED (Id ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
)
假设我添加了另一个索引来帮助进行一些特殊的搜索(尽管原因并不相关)。是否有理由将 Id(主键)作为索引中的列之一包含在内?我有 SQL 专家告诉我这是浪费空间,因为索引已经以某种方式包含主键。
CREATE INDEX [idxEmployerByNameAddress1City] on [Employer] ([EntityId], [Id], [Name], [Address1], [City])