快速存储过程但在使用作业执行时速度较慢

时间:2015-04-20 10:13:49

标签: sql-server stored-procedures jobs

我有一个存储过程,在执行它时会快速运行,或者突出显示脚本fta,它通常会运行或执行代码。

从1个表中选择前3个只需要一秒钟或1.5秒,这个表来自一个服务器并将其插入另一个表中,该表也在另一个服务器中。

但是当我尝试使用作业执行存储过程时,这样做需要一辈子的时间。我错过了什么吗?

USE [xxxx]
GO
/****** Object:  StoredProcedure [dbo].[MARK_ACTIVE]    Script Date: 4/20/2015 5:55:53 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO



ALTER PROCEDURE [dbo].[xxxx]
AS
SET ANSI_NULLS ON
INSERT INTO [123.456.7.890].[DBASE1].[dbo].[TABLE]    (smsfr,smsmsg,smsdt,dbdt,devid,status,status2,IsHEX)
SELECT TOP 3 smsfr,smsmsg,smsdt,dbdt,devid,status,status2,IsHEX
FROM [098.765.4.321].[[DBASE2].[dbo].[TABLE2] cr
WHERE
NOT EXISTS (SELECT  id,smsfr,smsmsg,smsdt,dbdt,devid,status,status2,IsHEX     FROM [123.456.7.890].[DBASE1].[dbo].[TABLE]  c
      WHERE cr.smsdt = c.smsdt)

1 个答案:

答案 0 :(得分:1)

理论上,从任何连接调用的相同存储过程应该以大致相同的速度运行,无论谁调用它。但是......有连接设置会导致创建不同的执行计划。如果您在SSMS中运行(可能是您自己的PC本地)和服务器上自动运行的内容之间的性能不同,我会检查两台计算机上的ANSI连接设置。看看有什么不同,因为我打赌你有不同的东西