Sql server 2005 SQL Server代理作业运行存储过程非常缓慢

Sql server 2005 SQL Server代理作业运行存储过程非常缓慢,sql-server-2005,stored-procedures,sql-agent-job,Sql Server 2005,Stored Procedures,Sql Agent Job,我有一个基本上重建透视表的存储过程。它在临时表中构建新数据,然后截断永久表并插入新数据,最后删除临时表 当我在ManagementStudio中直接执行存储的过程或T-SQL代码时,大约需要一分钟。虽然我知道这不是最有效的流程,但我同意 当我试图将此任务安排为每20分钟左右运行一次时,我的问题就出现了。当我设置一个SQL Server代理作业来执行存储过程时,现在几乎需要一个半小时。。。没错,慢了90倍 我发现了这篇文章:,这似乎是一个类似的问题,但无论我是在存储过程的开始还是在SQL代理作业中

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

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

当我试图将此任务安排为每20分钟左右运行一次时,我的问题就出现了。当我设置一个SQL Server代理作业来执行存储过程时,现在几乎需要一个半小时。。。没错,慢了90倍

我发现了这篇文章:,这似乎是一个类似的问题,但无论我是在存储过程的开始还是在SQL代理作业中的exec命令之前调用它,将nocount设置为on似乎都没有任何效果。我的查询不使用任何游标,尽管我正在对一个表值函数进行交叉应用,该函数也不使用任何游标

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

作为参考,存储的过程如下所示:

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

我只是试着把临时表改成一个表变量。在SSM中运行似乎没有改变。我在15分钟后停止了SQL Server代理任务。