【发布时间】:2023-03-27 09:33:01
【问题描述】:
我正在使用下表在客户端处理数据库:
CREATE TABLE [Example] (
[ID] INT IDENTITY (1, 1) NOT NULL,
....
[AddressID] INT NULL,
[RepName] VARCHAR(50) NULL,
....
CONSTRAINT [PK_Example] PRIMARY KEY CLUSTERED ([ID] ASC)
)
它有以下索引:
CREATE NONCLUSTERED INDEX [IDX_Example_Address]
ON [example]( [ID] ASC, [AddressId] ASC);
CREATE NONCLUSTERED INDEX [IDX_Example_Rep]
ON [example]( [ID] ASC, [RepName] ASC);
对我来说,这些对于聚集索引来说似乎是多余的。我无法想象在任何情况下这些都是有益的。如果有人能提出这些有用的情况,请告诉我。
这是另一个例子:
CREATE NONCLUSTERED INDEX [IDX_Example_IsDeleted]
ON [example]( [IsDeleted] ASC)
INCLUDE( [ID], [SomeNumber]);
为什么需要包含 [ID]?我的理解是聚集索引键已经存在于每个非聚集索引中,那么他们为什么要这样做呢?我只想包括 ([SomeNumber])
【问题讨论】:
标签: sql-server