【发布时间】:2010-10-19 14:24:38
【问题描述】:
在 SQL Server 中,我试图在给定不同键的插入性能方面对两个不同的表结构进行比较分析。我是否使用表变量进行此测试,或者我应该使用临时表是否重要?还是我需要麻烦实际创建表和索引?
具体来说,我目前正在使用以下脚本:
DECLARE @uniqueidentifierTest TABLE
(
--yes, this is terrible, but I am looking for numbers on how bad this is :)
tblIndex UNIQUEIDENTIFIER PRIMARY KEY CLUSTERED,
foo INT,
blah VARCHAR(100)
)
DECLARE @intTest TABLE
(
tblindex INT IDENTITY(1,1) PRIMARY KEY CLUSTERED,
foo INT,
blah VARCHAR(100)
)
DECLARE @iterations INT = 250000
DECLARE @ctrl INT = 1
DECLARE @guidKey UNIQUEIDENTIFIER
DECLARE @intKey INT
DECLARE @foo INT = 1234
DECLARE @blah VARCHAR(100) = 'asdfjifsdj fds89fsdio23r'
SET NOCOUNT ON
--test uniqueidentifier pk inserts
PRINT 'begin uniqueidentifier insert test at ' + CONVERT(VARCHAR(50), GETDATE(), 109)
WHILE @ctrl < @iterations
BEGIN
SET @guidKey = NEWID()
INSERT INTO @uniqueidentifierTest (tblIndex, foo, blah)
VALUES (@guidKey, @foo, @blah)
SET @ctrl = @ctrl + 1
END
PRINT 'end uniqueidentifier insert test at ' + CONVERT(VARCHAR(50), GETDATE(), 109)
SET @CTRL = 1
--test int pk inserts
PRINT 'begin int insert test at ' + CONVERT(VARCHAR(50), GETDATE(), 109)
WHILE @ctrl < @iterations
BEGIN
INSERT INTO @intTest (foo, blah)
VALUES (@foo, @blah)
SET @ctrl = @ctrl + 1
END
PRINT 'end int insert test at ' + CONVERT(VARCHAR(50), GETDATE(), 109)
SET NOCOUNT OFF
【问题讨论】:
标签: sql sql-server performance