Pri*_*l85 6 sql-server non-clustered-index
为SQL Server表创建的多列非聚簇索引中的列顺序是否真的重要?
例如是
CREATE NONCLUSTERED INDEX [MultiFieldIndex_1]
ON [Table_01] ([Column_A],[Column_B],[Column_C],[Column_D])
Run Code Online (Sandbox Code Playgroud)
与...一样
CREATE NONCLUSTERED INDEX [MultiFieldIndex_1]
ON [Table_01] ([Column_D],[Column_C],[Column_B],[Column_A])
Run Code Online (Sandbox Code Playgroud)
?
是的,这很重要!
该指数可能会被使用,如果您的查询包括N位,最该索引的列.
因此,对于您的第一个索引版本,如果您使用MultiFieldIndex_1它,则可能会使用它
但它不是以往任何时候都可以,如果你使用的考虑
然而,你的索引的第二个版本可能会,如果你只指定使用D,或D和C-但它永远不会被使用,如果你只是指定A和B
只有当你总是使用索引中定义的所有列时,它们被定义的顺序变得(几乎)无关紧要(对于按最高选择性等排序仍有一些细微差别,但这些不如事实重要.如果您未在SELECT语句中指定n个最左侧的列,则不会使用索引)