数据表值参数和暂存数据表性能测试 (table

SQL# 数据表值参数和暂存数据表性能测试 * table-parameter & temporary-table Performance Test


动作:分别对数据表值参数和暂存数据表执行三次相同作业(数据量<=1000)。

by table-parameter

SET STATISTICS TIME ON
DECLARE @mytmp TABLE
(
id int,
name nvarchar(10),
email nvarchar(100)
)
 
INSERT INTO @mytmp
SELECT * FROM dbo.userd
SET STATISTICS TIME OFF

by temporary-table

SET STATISTICS TIME ON
create table #mytmp
(
id int,
name nvarchar(10),
email nvarchar(100)
)
 
INSERT INTO #mytmp
SELECT * FROM dbo.userd
 
SET STATISTICS TIME OFF

结果:

image_thumb_19

结论:

处理小数据量作业并重复使用的数据表值参数看来会因为缓存(from temporary table)而获益,

而第一次数据表值参数花费较多时间,由于数据表值参数存在内存中,

个人觉得大多花费在初始划分内存区块上(VM测试),

相对temp-table是因为tempdb早已初始并分配好Disk I/O,故在第一次两者才会有那么大的差距,

但在后面两次的测试中,就可以感受到数据表值参数的执行性能了。