parameter-sniffing

    0熱度

    1回答

    當針對表運行sp_recompile時,我明白所有依賴於該表的存儲過程和觸發器都將被重新編譯。 我不明白的是SQL Server使用這個重新編譯的參數。我看不出參數嗅探會在這裏產生影響。它是否使用類似於OPTIMIZE FOR UNKNOWN的方式來編譯「通用」執行計劃? 我覺得我錯過了一些非常明顯的東西。 有沒有人對此有所瞭解?

    1熱度

    1回答

    我使用sp_executesql傳遞一個複雜的選擇與幾個參數。這樣做比從存儲過程中取出並聲明變量要慢得多。 我見過很多關於SQL參數嗅探的問題,我的場景聽起來像是這樣。但是,即使在調用DBCC FREEPROCCACHE或修改外部Select與Option (Recompile)之後,與在存儲過程之外寫入相同的查詢相比,它仍然使用不同且不合適的執行計劃。 但仍然使用存儲過程,但將參數的副本設置爲局

    3熱度

    2回答

    SQL Server 2014的"Hekaton" in-memory table optimization宣稱「存儲過程中業務邏輯的本地編譯」。由於SQL Server 2012及更早版本中的「參數嗅探」問題(請參閱here和here),但是我一直被迫設計了大多數使用OPTIMIZE FOR UNKNOWN(或其等價物)的存儲過程。這有效地防止了查詢計劃被緩存,並且強制SQL Server在每次

    0熱度

    1回答

    我有一個SELECT語句(不是存儲過程),用於在SSRS(Visual Studio 2010)中創建報告。 參數@ClassCode是造成麻煩的一個。但是在開發中它可以正常工作,但是當我將它部署到生產環境時,它會永久呈現。 我假設它是一個參數嗅探,我讀了關於如何修復它在存儲過程中。但我沒有SP,我正在使用SELECT語句。 SELECT語句的解決方法是什麼? 環境之間有什麼區別?生產要強大得多。

    1熱度

    1回答

    這是一個可能的this question重複,儘管我認爲我的示例更深入一些,我希望得到更明確的答案。 我試圖理解爲什麼運行與option(recompile)簡單的查詢表現更好。 DECLARE @p9 nvarchar(4000) SET @p9=N'Alex%' SELECT ContactId as CandidateId FROM Candidate WHERE

    4熱度

    2回答

    我相當肯定,添加參數嗅探表值參數是很少或沒有價值,但我想知道如果有人可以證實這一點? (INT_LIST是用戶定義的表類型是INT類型的單個列) CREATE PROCEDURE [dbo].[TVPSniffTest]( @param1 varchar(50), @idList INT_LIST readonly ) AS BEGIN DECLARE @para

    1熱度

    1回答

    創建以下腳本來加載用戶帳戶。在管理工作室的初始測試中使用用戶名參數字符串。奇怪的是,我從參數字符串更改爲字符串文字後,查詢減慢了20秒。是不是通常用於參數嗅探的其他方式?我已經嘗試了DBCC FREEPROCCACHE並創建了一個存儲過程,並設置了一些本地變量,但是這並沒有加快查詢速度。有什麼建議麼? DECLARE @accntRep VARCHAR(50) SET @accntRep = '

    3熱度

    2回答

    當我的其中一個查詢花費比預期更長的時間執行時,我遇到了參數嗅探。當我鑽研得更深的這個問題,我才知道: 當第一次查詢被執行它(SQL Server)建立該查詢和次其它n個相同的查詢執行,如果創建執行計劃它已經很大的差異在結果集與第一次執行則發生參數嗅探問題」。 這是我的情況。 現在的問題是,有沒有什麼辦法或變通方法來克服參數嗅探SQL Server在這些情況下? 我通過運行知道sp_updatest

    3熱度

    1回答

    我有以下代碼重複運行存儲過程。當我逐字運行SQL語句時,它工作得很好,所以我創建了一個存儲過程,它封裝了我正在做的事情。 foreach (string worker in workers) { _gzClasses.ExecuteCommand("EXEC dbo.Session_Aggregate @workerId = {0}, @timeThresh = {1}", worke

    6熱度

    1回答

    我在SQL Server 2012中有一個多租戶數據庫,其中每個租戶的行由tenant_id列(又名Shared Database, Shared Schema方法)標識。有些租戶,特別是較新的租戶,行數很少,而其他租戶則有很多。 SQL Server的查詢優化器通常會生成基於它的第一個執行過程中所提供的參數的查詢計劃,然後重新使用該計劃,今後所有的查詢即便是有不同的參數。這被稱爲paramete