创建具有两列的索引和在两列上创建单独的索引之间的区别

时间:2014-07-04 06:21:57

标签: sql sql-server sql-server-2008 indexing non-clustered-index

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

之间的区别
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)

1 个答案:

答案 0 :(得分:2)

如果您有任何基于col2单独选择的查询,则可能会遇到差异。

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

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

但是,如果(col1, col2)上只有复合索引,则该索引不能用于此查询。如果在查询中引用 n最左侧列,则只能使用 复合索引。

因此可以使用复合索引

  • 如果您的查询在col1条款中同时使用col2WHERE
  • 如果您的查询仅在col1子句中使用WHERE

但如果您的查询仅在col2子句中使用WHERE

,则可以从不