插入临时表是为了减慢速度

时间:2014-04-11 18:05:05

标签: sql-server performance insert temp-tables

我想知道为什么如果我从我的程序中创建一个临时表,插入到它中的速度比在我的程序中创建临时表要慢。 举个例子:

create table #Test (col1 varchar(max))
go
create proc dbo.test
as
begin
    truncate table #Test
    insert into #Test
    select 'teste'
    FROM sys.tables
    cross join sys.columns
end
go
exec dbo.test
go

create table #Test2 (col1 varchar(max))
go
truncate table #Test2
insert into #Test2
select 'teste'
FROM sys.tables
cross join sys.columns

在测试中,我们得到持续时间71700,读取45220,CPU 26052 在test2,我们得到持续时间49636,读取45166,cpu 24960

最好的问候

1 个答案:

答案 0 :(得分:1)

逻辑读取和CPU几乎相等(您应该多次运行测试并获得平均值),这可能是冷和热缓存或阻塞的问题。检查输出od set statistics io on的物理读数和预读,看看发生了什么。