相关疑难解决方法(0)

为什么在我的测试用例中,顺序 GUID 键的执行速度比顺序 INT 键快?

在问了这个比较顺序和非顺序 GUID 的问题后,我尝试比较 INSERT 性能在 1) 一个带有顺序初始化的 GUID 主键newsequentialid()的表,和 2) 一个带有顺序初始化的 INT 主键的表identity(1,1)。我希望后者最快,因为整数的宽度较小,并且生成顺序整数似乎比顺序 GUID 更简单。但令我惊讶的是,带有整数键的表上的 INSERT 比顺序 GUID 表慢得多。

这显示了测试运行的平均时间使用 (ms):

NEWSEQUENTIALID()  1977
IDENTITY()         2223
Run Code Online (Sandbox Code Playgroud)

谁能解释一下?

使用了以下实验:

SET NOCOUNT ON

CREATE TABLE TestGuid2 (Id UNIQUEIDENTIFIER NOT NULL DEFAULT NEWSEQUENTIALID() PRIMARY KEY,
SomeDate DATETIME, batchNumber BIGINT, FILLER CHAR(100))

CREATE TABLE TestInt (Id Int NOT NULL identity(1,1) PRIMARY KEY,
SomeDate DATETIME, batchNumber BIGINT, FILLER CHAR(100))

DECLARE @BatchCounter INT = 1
DECLARE @Numrows INT = 100000


WHILE …
Run Code Online (Sandbox Code Playgroud)

sql-server clustered-index

39
推荐指数
4
解决办法
1万
查看次数

索引优化脚本中的过滤模式

是否可以使用 Ola 的脚本进行索引优化并过滤掉特定的模式?

sql-server ola-hallengren index-maintenance

3
推荐指数
1
解决办法
295
查看次数