我有一个名为'Docs'的表,其主键是以下列的组合:DocId,DocStatus,DocSubId。
现在我运行以下查询:
select * from Docs where DocId = 200
那么它最终会使用主键的聚簇索引吗?或者在DocId上创建单独的索引以优化上述查询会更快。
答案 0 :(得分:2)
将使用现有的聚簇索引,不需要单独的索引。在复合索引上,最左侧列上的任何查询都可以使用索引。因此,您的索引也适用于以下查询:
SELECT * FROM Docs WHERE DocId = 200 AND DocStatus = 1
另一方面,复合索引对于仅在DocStatus上的查询无效,因为不使用最左边的列。
SELECT * FROM Docs WHERE DocStatus = 1 -- Can't use the composite index.