UNIQUEIDENTIFIER主键非聚簇

时间:2015-07-17 10:40:53

标签: sql-server tsql sql-server-2012

我刚遇到this。我们假设我实施了marc_s的建议:

CREATE TABLE dbo.MyTable
(PKGUID UNIQUEIDENTIFIER NOT NULL,
 MyINT INT IDENTITY(1,1) NOT NULL,
 .... add more columns as needed ...... )

ALTER TABLE dbo.MyTable
ADD CONSTRAINT PK_MyTable
PRIMARY KEY NONCLUSTERED (PKGUID)

CREATE UNIQUE CLUSTERED INDEX CIX_MyTable ON dbo.MyTable(MyINT)

因此,我是否总是在任何连接表中使用MyINT作为外键?

PS:

我认为this会回答它,但我并不百分之百确定。

2 个答案:

答案 0 :(得分:1)

使用聚簇索引作为外键可以加快连接速度。

但你也可以索引你的GUID列并将其用于连接,尽管期望性能稍差。

你必须考虑一下GUID是否为你提供了额外的信息(也许你不是使用随机GUID而是电子邮件地址?),在这种情况下,将它们用作外键而不是随机数可能有其他好处。例如。在某些查询中,您可能不需要连接到主表来执行过滤,因为您现在可以预先使用GUID。

答案 1 :(得分:1)

是,如果将MyInt指定为外键约束或连接条件中的引用列。那是因为MyINT是索引的密钥,SQL-Server可以直接寻找。