用两列创建索引和在两列上创建单独的索引有什么区别?
之间的区别
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)
用两列创建索引和在两列上创建单独的索引有什么区别?
之间的区别
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)
如果您有任何仅基于选择的查询,您可能会遇到不同col2
。
SELECT (list of columns)
FROM dbo.YourTable
WHERE col2 = 'someValue'
如果您有两个单独的索引,则有ix_index2
可能用于加速此查询。
但是,如果您在 上只有一个复合索引(col1, col2)
,则该索引永远不能用于此查询。只有在查询中引用了最左边的 n 列时,才能使用复合索引。
所以你的复合索引可能会被使用
col1
andcol2
WHERE
col1
在WHERE
子句中使用但如果您的查询仅在子句中使用,则永远不能使用它col2
WHERE