您何时使用GUID作为主键?

Col*_*ond 4 sql-server uuid guid primary-key microsoft-sync-framework

可能重复:
GUID/UUID数据库密钥的优缺点

在任何情况下,必须将GUID用作SQL Server 2005/8数据库中的主键.例如,使用MS Sync Framework强制执行此操作还是数据复制?

Joh*_*ter 16

如果需要通过复制同步多个数据库,则可以使用guids作为键.

使用guids的另一个原因是,如果您想在某个远程客户端上创建行,例如winforms应用程序,然后通过Web服务等将其提交给服务器.

如果你这样做,我强烈建议你确保你根据一个非唯一的自动递增int指定你自己的聚集索引.将行插入到聚簇索引是guid的表中可能是一个相当大的开销.

更新:以下是如何设置这样的表的示例:

CREATE TABLE [dbo].[myTable](
[intId] [int] IDENTITY(1,1) NOT NULL,
[realGuidId] [uniqueidentifier] NOT NULL,
[someData] [varchar](50) NULL,
    CONSTRAINT [PK_myTable] UNIQUE NONCLUSTERED 
    (
   [realGuidId] ASC
    )
)

CREATE CLUSTERED INDEX [IX_myTable] ON [dbo].[myTable] 
(
[intId] ASC
)
Run Code Online (Sandbox Code Playgroud)

你会像往常一样插入表中,例如:

INSERT INTO myTable VALUES(NEWID(), 'Some useful data goes here')
Run Code Online (Sandbox Code Playgroud)

更新:我听了一个非常好的dotnetrocks插曲,谈论这个值得倾听 - 显示#447