唯一索引中的前导列是否有所作为?

时间:2017-10-09 19:29:20

标签: sql-server indexing database-performance

我有以下唯一索引。

CREATE UNIQUE NONCLUSTERED INDEX [IX_Unique_Company_Owners] ON [dbo].[Company_Owners]
(
    [Company_Entity_ID_FK] ASC,
    [Person_Entity_ID_FK] ASC
)

列顺序是否有所作为?我知道它适用于非唯一索引。但不确定SQL Server是否在某种程度上调整了幕后的唯一索引。

请注意,这两列都不为空。

2 个答案:

答案 0 :(得分:2)

列顺序对UNIQUE索引的性能影响与对非唯一索引的影响相同。

SQL Server以不同方式处理UNIQUE索引的唯一方法是在插入或更新行时检查唯一性。出于SELECT查询的目的,唯一索引和非唯一索引的处理方式相同。

答案 1 :(得分:1)

绝对有所作为。

与通过last_name然后first_name vs first_name然后last_name订购电话簿的区别相同。

如果你总是通过这两个值进行查询,那么它就不会产生真正的世界差异,但如果你经常只通过人查询,那么这个索引就不会非常有用,因为它是顺序中的第二个。