Sql server 在SQL Server中,多列非聚集索引中的列顺序是否重要?
为SQL Server表创建的多列非聚集索引中的列顺序真的很重要吗 例如:是的Sql server 在SQL Server中,多列非聚集索引中的列顺序是否重要?,sql-server,non-clustered-index,Sql Server,Non Clustered Index,为SQL Server表创建的多列非聚集索引中的列顺序真的很重要吗 例如:是的 CREATE NONCLUSTERED INDEX [MultiFieldIndex_1] ON [Table_01] ([Column_A],[Column_B],[Column_C],[Column_D]) 同 CREATE NONCLUSTERED INDEX [MultiFieldIndex_1] ON [Table_01] ([Column_D],[Column_C],[Column_B],[Co
CREATE NONCLUSTERED INDEX [MultiFieldIndex_1]
ON [Table_01] ([Column_A],[Column_B],[Column_C],[Column_D])
同
CREATE NONCLUSTERED INDEX [MultiFieldIndex_1]
ON [Table_01] ([Column_D],[Column_C],[Column_B],[Column_A])
是的,这很重要强>
如果查询包含该索引最左边的n列,则可以使用该索引
因此,对于索引的第一个版本MultiFieldIndex_1
,如果您
- 使用所有四列
- 使用A、B、C列
- 使用A、B列
- 使用A列
- 就在D栏
- C列和D列 等等
D
,或D
和C
,则可能会使用第二个版本的索引,但如果只指定A
和B
,则永远不会使用该索引
只有当您总是使用索引中定义的所有列时,它们的定义顺序才变得(几乎)不相关(在按最高选择性排序等方面仍存在一些细微差别,但这些差别远不如在
SELECT
语句中不指定最左边的n列时不使用索引这一事实重要)通过查询,您指的是WHERE子句右边的列?