Sql 使用两列创建索引和在两列上创建单独索引之间的区别
使用两列创建索引和在两列上创建单独索引有什么区别 区别Sql 使用两列创建索引和在两列上创建单独索引之间的区别,sql,sql-server,sql-server-2008,indexing,non-clustered-index,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) 及 如果有任何查询仅基于col2进行选择,则可能会遇到不同 SELECT (list of columns) FROM dbo.YourTable WHERE col2 = 'someValue' 如果有两个单独的索引,则有可能使用
create nonclustered index ix_index1 on table1(col1)
create nonclustered index ix_index2 on table1(col2)
及
如果有任何查询仅基于
col2
进行选择,则可能会遇到不同
SELECT (list of columns)
FROM dbo.YourTable
WHERE col2 = 'someValue'
如果有两个单独的索引,则有可能使用ix_index2
来加速此查询
但是,如果在(col1,col2)
上只有一个复合索引,则该索引永远不能用于此查询。如果查询中引用了最左边的n列,则只能使用复合索引
所以可以使用复合索引
- 如果查询在
子句中同时使用WHERE
和col1
col2
- 如果查询在
子句中仅使用WHERE
col1
但是,如果您的查询只在
WHERE
子句中使用col2
,那么它就永远不会被使用。如果查询根本不使用WHERE子句呢?那么您的索引就完全没有用了(除非您使用的ORDER BY
子句使用了这些列中的一个或两个列)
SELECT (list of columns)
FROM dbo.YourTable
WHERE col2 = 'someValue'