小编ult*_*ife的帖子

SQL Server:为现有索引创建新的 GUID 值

我有一个大约有 600 万行的现有表。相关栏目有:

ID int not null PK
Key uniqueidentifier not null
Run Code Online (Sandbox Code Playgroud)

通过Key查找对该表的读/写可能类似于 100 比 1。

现有的行都是使用创建的,newid()所以它们没有顺序。存在一个索引Key

CREATE NONCLUSTERED INDEX [idx_Robert] ON [dbo].[Aleksander]
(
    [Key] ASC
) WITH (PAD_INDEX = OFF
    , STATISTICS_NORECOMPUTE = OFF
    , SORT_IN_TEMPDB = OFF
    , DROP_EXISTING = OFF
    , ONLINE = OFF
    , ALLOW_ROW_LOCKS = ON
    , ALLOW_PAGE_LOCKS = ON
    , FILLFACTOR = 80
    ) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

鉴于表中已经有数百万行,将 GUID 生成更改为顺序使用有什么好处newsequentialid()

展望未来,它将生成更好的数据,但由于不知道新的顺序 GUID 系列将在索引中的哪个位置,它会更快地破坏索引吗?将 GUID 生成保留为非顺序是否会更好,以便索引中的剩余页面空间更均匀地填充?

就表的增长率而言,它代表了大约3年的数据。

Year …
Run Code Online (Sandbox Code Playgroud)

index sql-server uniqueidentifier sql-server-2012 uuid

6
推荐指数
2
解决办法
1524
查看次数