我刚遇到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会回答它,但我并不百分之百确定。
答案 0 :(得分:1)
使用聚簇索引作为外键可以加快连接速度。
但你也可以索引你的GUID列并将其用于连接,尽管期望性能稍差。
你必须考虑一下GUID是否为你提供了额外的信息(也许你不是使用随机GUID而是电子邮件地址?),在这种情况下,将它们用作外键而不是随机数可能有其他好处。例如。在某些查询中,您可能不需要连接到主表来执行过滤,因为您现在可以预先使用GUID。
答案 1 :(得分:1)
是,如果将MyInt指定为外键约束或连接条件中的引用列。那是因为MyINT是索引的密钥,SQL-Server可以直接寻找。