共用方式為


呼叫原生編譯預存程序的最佳作法

原生編譯預存程序:

  • 通常用於應用程式的關鍵性效能組件中。

  • 經常執行。

  • 預期非常快速。

使用原生編譯預存程序的效能優勢,會隨程序所處理的資料列數目和邏輯數量增多而提升。 例如,如果原生編譯預存程序使用下列一個或多個項目,則會展現更佳的效能:

  • 彙總:

  • 巢狀迴圈聯結。

  • 多重陳述式選取、插入、更新和刪除作業。

  • 複雜運算式。

  • 程序邏輯,例如條件陳述式和迴圈。

如果您只需要處理一個資料列,使用原生編譯預存程序可能不會提供效能優勢。

若要避免伺服器必須對應參數名稱和轉換類型:

  • 讓傳遞至程序的參數類型與程序定義中的類型相符。

  • 當呼叫原生編譯預存程序時,請使用序數 (無名) 參數。 若要以最有效率方式執行,請勿使用具名參數。

透過 XEvent hekaton_slow_parameter_passingreason=named_parameters,可偵測到 (無效率的) 具名參數與原生編譯預存程序的使用方式。

同樣地,您可以透過相同的 XEvent hekaton_slow_parameter_passingreason=parameter_conversion,偵測到不相符類型的使用方式。

由於您在許多案例中使用記憶體優化資料表 (時,需要實作重試邏輯) ,而且因為您必須解決某些功能限制,所以您可能想要建立包裝函式解譯的 Transact-SQL 預存程式。 如需範例,請參閱 Memory-Optimized 資料表上交易的重試邏輯指導方針

另請參閱

原生編譯的預存程序