2015-04-20 43 views
2

我有一個存儲過程,它在執行時運行速度很快,或者突出顯示通常運行或執行代碼的f5腳本。快速存儲過程,但使用作業執行時速度慢

只用了一個第二秒或1.5秒剛剛從1個表,它是從一個服務器選擇頂部3並把它插入到另一個表,這也是在另一個服務器。

但是當我嘗試使用作業來執行存儲過程時,只需要一生就可以做到這一點。我錯過了什麼嗎?

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

是額外的'[''在FROM [098.765.4.321]。[DBASE2] [DBO]。[TABLE2] cr'一個錯字? – Raj

+0

是的,這只是一個錯字錯誤。對不起 – CheAnne

+0

這是按計劃運行嗎?您是否試過通過右鍵單擊作業手動設置代理作業?這可能是因爲如果它是一個預定的作業,它會與其他作業一起運行,導致任一服務器的I/O增加。這會導致速度放慢。 –

回答

1

從理論上講,從任何連接調用的相同的存儲過程應該以大致相同的速度運行,而不管誰調用它。但是......有連接設置會導致創建不同的執行計劃。如果你在SSMS中運行事物(大概是從你自己的PC本地運行)和你的服務器上自動運行的東西之間獲得不同的性能,我會檢查兩臺機器上的ANSI連接設置。看看有什麼不同,因爲我敢打賭,你已經得到的東西不同,但有

相關問題