gpt4 book ai didi

sql - 何时使用 NEWID 或 NEWSEQUENTIALID 以及为什么

转载 作者:搜寻专家 更新时间:2023-10-30 19:45:20 26 4
gpt4 key购买 nike

我试图了解 NewId 和 'NewSequentialId 在实际生活中的用法,我通常在创建新的时使用 Identity 属性像这样的表格:

CREATE TABLE MYTABLE
(
[ID] INT PRIMARY KEY IDENTITY,
[NAME] NVARCHAR(MAX) NOT NULL
);
GO

上面的代码不是最佳实践吗,如果是这样我应该用这个替换它:

CREATE TABLE MYTABLE
(
[ID] UNIQUEIDENTIFIER PRIMARY KEY DEFAULT NEWID(),
[NAME] VARCHAR(MAX) NOT NULL
);
GO

或者用这个:

CREATE TABLE MYTABLE
(
[ID] UNIQUEIDENTIFIER ROWGUIDCOL PRIMARY KEY DEFAULT NEWSEQUENTIALID(),
[NAME] nVARCHAR(MAX) NOT NULL
);
GO

问题:NewId 或 NEWSEQUENTIALID 是 Identity 的替代品吗?如果不是,何时分别使用?

我并没有尝试使用 NewIdNewSequentialId 作为 Primary Key,上面的代码仅用于演示目的,也许这个代码像这样更好:

CREATE TABLE MYTABLE
(
[ID] INT NOT NULL PRIMARY KEY,
[ROWGUID] UNIQUEIDENTIFIER ROWGUIDCOL DEFAULT NEWSEQUENTIALID(),
[NAME] nVARCHAR(MAX) NOT NULL
);
GO

最佳答案

如果我理解正确的话,GUID 的性能并不总是很好,因为它不是索引的可排序字段。
sequentialid 可以通过创建更易于排序的 GUID 来克服这个问题,从而为您的表创建更好的索引。

我知道它比这复杂一点,但我尽量解释得尽可能简单。

因此,如果您想使用 GUID 作为主键,我建议您使用 sequentialID。

您应该问问自己,为什么要将 GUID 作为主键,如果不需要就不要。

关于sql - 何时使用 NEWID 或 NEWSEQUENTIALID 以及为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40256318/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com