运行存储过程的SQL Server代理作业很慢

时间:2012-04-26 20:08:10

标签: sql-server-2005 stored-procedures sql-agent-job

我有一个基本上重建数据透视表的存储过程。它在临时表中构建新数据,然后截断永久表并插入新数据,最后删除临时表。

当我在Management Studio中执行存储过程(或直接使用T-SQL代码)时,大约需要一分钟。虽然我知道这不是最有效的流程,但我很乐意。

当我尝试将此任务安排为每20分钟左右运行时,我的问题就出现了。当我设置一个SQL Server代理作业来执行存储过程时,它现在需要将近一个半小时...这是正确的,90次降低!

我发现这篇文章:SQL Server Agent Job Running Slow,这似乎是一个类似的问题,但set nocount on似乎没有任何影响我是否在存储过程的开头或之前调用它SQL代理作业中的exec命令。我的查询不使用任何游标,但我在表值函数(也不使用任何游标)上执行cross apply

我显然错过了一些东西,但我甚至不知道从哪里开始。我想通过创建存储过程我会避免这些类型的问题。

作为参考,存储的proc看起来如下所示:

create table #temp
(
  ID    int,
  data1 float,
  data2 float
)
insert into #temp(ID, data1, data2)
select t.ID, d.data1, d.data2
from tbl1 t
  cross apply dbo.getInterestingData(t.ID, t.param1) d
where d.useMe = 1

truncate table dataPivot

insert into dataPivot(ID, data1, data2)
select ID, data1, data2
from #temp

drop table #temp

0 个答案:

没有答案