2

用两列创建索引和在两列上创建单独的索引有什么区别?

之间的区别

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)
4

1 回答 1

3

如果您有任何仅基于选择的查询,您可能会遇到不同col2

SELECT (list of columns)
FROM dbo.YourTable
WHERE col2 = 'someValue'

如果您有两个单独的索引,则有ix_index2可能用于加速此查询。

但是,如果您在 上只有一个复合索引(col1, col2),则该索引永远不能用于此查询。只有在查询中引用了最左边的 n 列时,才能使用复合索引。

所以你的复合索引可能会被使用

  • 如果您的查询在子句中同时使用col1andcol2WHERE
  • 如果您的查询仅col1WHERE子句中使用

但如果您的查询仅在子句中使用,则永远不能使用它col2WHERE

于 2014-07-04T07:14:41.117 回答