为SQL Server表创建的多列非聚簇索引中的列顺序是否真的重要?
E.g。是
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])
答案 0 :(得分:8)
是的,这很重要!
如果您的查询包含该索引的 n个最左侧列,则可以使用 索引。
因此,使用您的第一个版本的索引MultiFieldIndex_1
,如果您
但如果您使用
, NOT 将会被考虑但是,如果您只指定D
或D
和C
,则可以使用索引的第二个版本< - >,但它会如果您只指定A
和B
只有当您始终使用索引中定义的所有列时,它们的定义顺序才会(几乎)无关紧要(仍有一些细微差别至于按最高选择性等排序,但是如果你没有在SELECT
陈述中指定n个最左边的列,则不会使用索引这一事实重要性1}