单列索引与组合列索引

时间:2012-03-01 18:19:06

标签: sql-server-2008 indexing

我有一个名为'Docs'的表,其主键是以下列的组合:DocId,DocStatus,DocSubId。

现在我运行以下查询:

select * from Docs where DocId = 200

那么它最终会使用主键的聚簇索引吗?或者在DocId上创建单独的索引以优化上述查询会更快。

1 个答案:

答案 0 :(得分:2)

将使用现有的聚簇索引,不需要单独的索引。在复合索引上,最左侧列上的任何查询都可以使用索引。因此,您的索引也适用于以下查询:

SELECT * FROM Docs WHERE DocId = 200 AND DocStatus = 1

另一方面,复合索引对于仅在DocStatus上的查询无效,因为不使用最左边的列。

SELECT * FROM Docs WHERE DocStatus = 1 -- Can't use the composite index.