sql >> データベース >  >> RDS >> Sqlserver

既知の問題?:SQL Server 2005 ストアド プロシージャがパラメーターで完了できない

    入力パラメーターをマスクしてみてください。

    指定されたデフォルトが原因で、再コンパイルが機能していないと思います (EDIT :または、最初の呼び出しで送信されたパラメーター) がコンパイル時にスニッフィングされています。したがって、再コンパイルしても効果はありません。

    デフォルトを 0 から NULL に変更したり、デフォルトを持たなかったりするだけで、推定プランに大きな違いが見られました。

    ALTER PROCEDURE [usp_debug_mightwork]
        @DATA_DT_ID AS int = 20081130
    AS
    BEGIN
        DECLARE @IDATA_DT_ID AS int
        SET @IDATA_DT_ID = @DATA_DT_ID
        -- Stuff here that depends on IDATA_DT_ID
    END
    

    この記事 説明します...

    編集:

    クエリ プランとパラメータに関する新しいリンク .デフォルトが指定されているかどうかにかかわらず、パラメータ スニッフィングのままです。

    定数と計画に関する関連記事の種類



    1. mysqlでJSONから値を選択する方法

    2. 複数のデータベースに対するMySQLGrant

    3. 単一の.sqlファイル内のBEGIN/ENDおよびCREATEテーブル

    4. クエリセットobjをパラメータとして渡すときにCeleryがエラーを発生させる