執行儲存過程比即時SQL執行慢的解決方案

2022-02-26 13:12:59 字數 799 閱讀 7301

發生過這樣一件事, 寫了乙個sql,查詢資料大概5秒,但是放到儲存過程裡面去了過後,查了5分鐘也沒給出結果,後來網上找解決方案,終於找到乙個解決方案。

在儲存過程的引數那裡對引數進行乙個傳遞。反正他們說的引數嗅探是這個意思。這是儲存過程的機制。具體是什麼,大家去網上搜尋下。

alter

procedure

seluserrecordgamescoreinfobykindid

@vartime1

datetime

,@vartime2

datetime

,@varkindid

int,

@vartype

intas begin

declare

@time1

datetime

,@time2

datetime

,@kindid

int,

@type

intset

@time1

=@vartime1

set@time2

=@vartime2

set@kindid

=@varkindid

set@type

=@vartype

這樣能解決了。

引用別人的一句話:

其實簡單來講,引數嗅探我的很通俗的解釋就是:sqlserver用鼻子嗅不到具體引數是多少

所以他不能選擇最合適的執行計畫去執行你的查詢,所以引數嗅探是乙個不好的現象。

sql儲存過程比sql語句執行慢很多

引數嗅探的問題 原因 1 可能是發生了引數嗅探,第一次賦給儲存過程的輸入引數,會為該儲存過程生成乙個基於輸入引數的執行計畫,因此如果第一次輸入的引數不具有代表性 例如大部分查詢輸入的引數都是a值,但第一次執行儲存過程時輸入的是b值 就有可能比即席查詢慢,儘管即席查詢需要重新編譯執行計畫,但選擇了更有...

SQL查詢語句執行速度快,儲存過程執行慢

今天乙個生成10w條資料的儲存過程執行了95s,但是單獨執行sql語句只需要28s,查資料後發現原來這是儲存過程的機制導致的,也就是傳說中的引數嗅探 網上的一段話 1 可能是發生了引數嗅探,第一次賦給儲存過程的輸入引數,會為該儲存過程生成乙個基於輸入引數的執行計畫,因此如果第一次輸入的引數不具有代表...

SQL 遠端執行儲存過程

1 首先是執行遠端連線 exec sp addlinkedserver 連線名字 sqloledb 遠端資料庫ip exec sp addlinkedsrvlogin 連線名字 false null,遠端資料庫帳號 遠端資料庫密碼 說明 連線名字可以自己隨便起,主要連線名字是用在後面的呼叫,下面有介...