【发布时间】:2023-03-20 18:14:01
【问题描述】:
我已经多次看到这种情况,当我在 SQL Server 数据库引擎优化顾问中运行一些分析时,它建议我创建如下索引:
CREATE NONCLUSTERED INDEX [_index] ON [dbo].[SomeTable]
(
[Column1] ASC,
[Column2] ASC,
[Column3] ASC
)
INCLUDE ([PrimaryKeyColumn])
在包含的列列表中包含主键(聚集索引)列真的很重要吗?我一直认为它默认包含在原始行的链接中。我错了吗?
更新: 我认为同样重要的是要注意它提出了这样的查询索引,例如: SELECT [PrimaryKeyColumn] FROM [dbo].[SomeTable] WHERE ...[Conditions]... 它确实会影响性能和执行计划。 据我所知,索引并不包含真正的“聚集索引”,而只是一些指向行的链接。是这样吗?
【问题讨论】:
-
主键和聚簇索引并不总是 1-1。您应该避免将两者混为一谈。
-
@Damien_The_Unbeliever 在这种情况下,PrimaryKeyColumn 在集群中。这就是我想在描述中指出的。如果我错过了什么,请告诉我。
标签: sql-server indexing database-tuning