非复合键的“群集/非群集”

时间:2017-01-15 19:44:57

标签: sql sql-server

在表中包含非复合键时,将它设置为聚簇键还是非聚簇键是否有意义?例如,假设下表:

CREATE TABLE [dbo].[Logins]
(
     [Customer_Id] UNIQUEIDENTIFIER ROWGUIDCOL PRIMARY KEY REFERENCES Customers(Customer_Id) ON DELETE CASCADE,
     [Email] NVARCHAR(50) NOT NULL UNIQUE NONCLUSTERED,
     [Password] NVARCHAR(64) NOT NULL
)

由于Customer_Id使用了顺序唯一标识符,因此没有理由将任何其他密钥设置为群集。但是从我的观点来看,如果另一个键是复合键,例如CONSTRAINT [Table_UK] UNIQUE NONCLUSTERED (Email, OrderId),那将是有益的。

但是,我不确定我所代表的非复合键是否也可以从非群集中受益,以节省数据库性能(节省排序等麻烦,因为顺序键本身就是有序的)

1 个答案:

答案 0 :(得分:0)

表上只能有一个聚簇索引,因此所有其他索引最多都是非聚簇索引,但从不聚集。有关详细信息,请参阅https://msdn.microsoft.com/en-us/library/ms190457.aspx