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

TSQL は、SQL Server のストアド プロシージャよりも高速に結果を返しますか

    クエリに OPTION(OPTIMIZE FOR UNKNOWN) を追加します (最後の句として)パラメーターのスニッフィングを防止します。構文と説明については、クエリ ヒント に関するドキュメントを参照してください。 .

    ストアド プロシージャを初めて実行するときに SQL Server が行うことは、渡されたパラメーターの実行計画を最適化することです。これは、Parameter Sniffing と呼ばれるプロセスで行われます。 .

    通常、実行プランは SQL Server によってキャッシュされるため、SQL Server は同じクエリに対して毎回再コンパイルする必要はありません。次にプロシージャが実行されるとき、SQL Server はその中のクエリに対して実行プランを再利用します。 .

    私があなたに与えたオプションは、実行計画が特定のために最適化されるべきではないことを SQL コンパイラに伝えます。 パラメータではなく、任意の ストアド プロシージャに渡されるパラメータ。

    ドキュメントを引用するには:

    場合によっては、ストアド プロシージャはパラメーター スニッフィングの恩恵を受けることができますが、そうでない場合もあります。パラメーター スニッフィングの恩恵を受けないストアド プロシージャについては、ストアド プロシージャのパラメーターのいずれかを使用する各クエリにオプションを追加できます。



    1. ストアドプロシージャ/関数はテーブルを返すことができますか?

    2. OracleDatabaseでデータベースオブジェクトとしてVARRAYを作成する方法

    3. Python:MySQLに接続してクエリを実行するためのベストプラクティスと最も安全な方法

    4. MicrosoftAzureでのPostgreSQLのフェイルオーバーとフェイルバック