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

sp_executesqlはパラメータで遅い

    最後にOPTION(RECOMPILE)を追加します

    ... AND SensorValue != -32767 OPTION (RECOMPILE) 
    

    「パラメータスニッフィング」が発生していると思われます

    その場合は、OPTIONのままにするか、代替案を検討することができます

    アップデート1

    次の記事では、「パラメータスニッフィング」を紹介しますhttp://pratchev.blogspot.be/2007/08/parameter-sniffing.html

    SQLサーバーの内部(噛み付く可能性がある)をよりよく理解できるようになるため、詳細を理解することをお勧めします。

    それを理解すれば、オプションの再コンパイルとのトレードオフができることがわかります。 ステートメントが非常に実行されると、パフォーマンスが低下します 頻繁。

    に再コンパイルするオプションを個人的に追加します 根本的な原因はパラメータのスニッフィングであり、パフォーマンスの問題がない限りそのままにしておきます。不正なパラメータスニッフィングを回避するためにステートメントを書き直すと、意図が失われ、保守性が低下します。ただし、書き直しが正当化される場合があります(そうする場合は適切なコメントを使用してください)。

    アップデート2

    私がこのテーマについて読んだ中で最も良かったのは、第32章の「パラメータスニッフィング:あなたの親友...それがGRANTFRITCHEYによるものでない場合を除く

    」でした。

    推奨されます。

    SQL Server MVP Deep Dives、Volume 2



    1. 複数のテーブルを検索し、結果の行にテーブル名を表示します

    2. 主キーを更新する方法

    3. PHPを使用して列のすべての値を取得するにはどうすればよいですか?

    4. ループせずにphpとmysqlを使用してスコアテーブルから誰かの「ランク」を取得する最善の方法