/ / sp_executeSQLプロシージャを使用して実行すると、同じSQL問合せで異なる実行計画が発生するのはなぜですか? - sql-server、tsql、sql-execution-plan、sp-executedql

sp_executeSQLプロシージャを使用して実行したときに、同じSQLクエリで異なる実行計画が発生するのはなぜですか? - sql-server、tsql、sql-execution-plan、sp-executedql

タイトルが述べるように、私はsp_executeSQLがSql Management Studioからクエリを実行するのとはまったく異なる実行計画を生成する理由を理解していません。

SQL管理Studioから実行すると、クエリは3秒かかるので、sp_executeSQL経由で管理スタジオで実行されるクエリには5分かかります。

私は統計を更新してインデックスを見直しましたが、sp_executeSQLの実行計画は管理スタジオからSQLを直接実行するよりも悪いことが私の頭に残っていました。

だからここに私の質問です:なぜ実行計画はこれらの2つの異なる方法でクエリを実行する間に多くの違いはありますか?

ありがとう

回答:

回答№1は5

見る この

基本的に、 同じ手続きのための複数の[実行]計画が存在する可能性があります


回答№2については2

このことを考慮。 ストアドプロシージャを実行する場合、このプロシージャには独自の実行計画があります。クエリ文を実行すると、再度独自の実行計画が作成されます。 sp_executeSQLを使用する場合、このストアド・プロシージャを実行して問合せを動的に実行します。つまり、実行計画はsp_executeSQLとクエリの組み合わせです。