我想知道为什么如果我从我的程序中创建一个临时表,插入到它中的速度比在我的程序中创建临时表要慢。 举个例子:
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
最好的问候
答案 0 :(得分:1)
逻辑读取和CPU几乎相等(您应该多次运行测试并获得平均值),这可能是冷和热缓存或阻塞的问题。检查输出od set statistics io on
的物理读数和预读,看看发生了什么。