我有一个大约有 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)