我想知道,如果下面是我們的設置錯誤或MS-SQL的錯誤:這是在MS-SQL的錯誤
如果我們運行有三個參數一定的存儲prodecure約需3分鐘。
CREATE PROCEDURE [dbo].[ourProcedure]
@param1 int,
@param2 int,
@param3 dateTime
AS
BEGIN...
如果我們運行相同的程序,但在創建中我們已經創建了參數的本地副本,它只需要11秒!
CREATE PROCEDURE [dbo].[ourProcedure]
@param1_x int,
@param2_x int,
@param3_x dateTime
AS
BEGIN
DECLARE @param1 int
DECLARE @param2 int
DECLARE @param3 dateTime
@param1 = @param1_x
@param2 = @param2_x
@param3 = @param3_x
...
有人可以告訴我爲什麼嗎?爲什麼SQL不處理像C#這樣的參數?
你能展示其餘的SP嗎?或者更好:比較兩個變體之間的查詢計劃。我認爲它與某種參數嗅探有關。這不是一個「sql性能」問題(如在解釋器中),但我認爲這是針對您生成的某些選擇的不同查詢計劃。 – TomTom
不,這不能成爲SP緩慢的原因。可能是SP中的查詢。發佈查詢。 – Rahul
「SP慢」咦?你讀過我的問題了嗎?唯一不同於SP的是我添加了複製參數的局部變量。 –