使用两列创建索引和在两列上创建单独的索引有什么区别?
之间的区别
create nonclustered index ix_index1 on table1(col1)
create nonclustered index ix_index2 on table1(col2)
和
create nonclustered index ix_index1 on table1(col1, col2)
答案 0 :(得分:2)
如果您有任何基于col2
单独选择的查询,则可能会遇到差异。
SELECT (list of columns)
FROM dbo.YourTable
WHERE col2 = 'someValue'
如果您有两个单独的索引,则可能会ix_index2
用于加速此查询。
但是,如果(col1, col2)
上只有复合索引,则该索引不能用于此查询。如果在查询中引用 n最左侧列,则只能使用 复合索引。
因此可以使用复合索引
col1
条款中同时使用col2
和WHERE
col1
子句中使用WHERE
但如果您的查询仅在col2
子句中使用WHERE