T-SQL复合索引足以查询列的子集吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了T-SQL复合索引足以查询列的子集吗?相关的知识,希望对你有一定的参考价值。

复合索引是否足以对列的子集进行查询?

CREATE TABLE [FILE_STATUS_HISTORY]
(
    [FILE_ID] [INT] NOT NULL,
    [STATUS_ID] [INT] NOT NULL,
    [TIMESTAMP_UTC] [DATETIME] NOT NULL,

    CONSTRAINT [PK_FILE_STATUS_HISTORY] 
        PRIMARY KEY CLUSTERED ([FILE_ID] ASC, [STATUS_ID] ASC)
) ON [PRIMARY]

CREATE UNIQUE NONCLUSTERED INDEX [IX_FILE_STATUS_HISTORY] 
ON [FILE_STATUS_HISTORY] ([FILE_ID] ASC,
                          [STATUS_ID] ASC,
                          [TIMESTAMP_UTC] ASC) ON [PRIMARY]
GO


SELECT TOP (1) *
FROM [FILE_STATUS_HISTORY]
WHERE [FILE_ID] = 382748
ORDER BY [TIMESTAMP_UTC] DESC
答案
实际执行计划将显示查询优化器是否同意。

covering index也将Status_Id作为included column,以便索引可以在一次查找中满足整个查询。

以上是关于T-SQL复合索引足以查询列的子集吗?的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server创建复合索引时,复合索引列顺序对查询的性能影响

SQL Server创建复合索引时,复合索引列顺序对查询的性能影响

SQL Server创建复合索引时,复合索引列顺序对查询的性能影响

SQL Server创建复合索引时,复合索引列顺序对查询的性能影响

复合索引的优点和注意事项

复合索引的优点和注意事项