2016-07-08 11 views
0

「Actual Execution Plan」を含むSQLステートメントを2回実行します。しかし、同じクエリに対して2つの異なる実行計画があります。唯一の違いはIDを変更することです。実行計画はデータに依存しますか?

  • まず、5つのレコードに関連するIDを持つsqlを実行します。
  • 第2に、5000+レコードに関連するIDを持つsqlを実行します。

データによって実行計画が変わるのですか?

私はR2

+7

***はい!***もちろん! SQL Serverはクエリに含まれる行数を分析し、行数に応じて、すべてのケースで可能な限り最適な実行計画を選択します。 –

+2

生成された実行計画を確認します。各ノードに「推定行数」と実際の行数が表示されていることに気付かなければなりません。 –

+0

同じ実行計画を使用するとインスタンスを取得できますが、これはパラメータスニッフィングと呼ばれる非常に悪いものです。これは基本的にオプティマイザが混乱して、実際にパフォーマンスが低下する可能性があります。あなたが興味を持っているなら、この件についてgoogleにはたくさんのリソースがあります。 –

答えて

-1

をSQL Server 2008を使用していますが、データに応じて、実行計画の変更をしていますか?

厳密に言えば、いいえ。クエリが変更されたり統計情報(データに依存する)が変更されると、実行計画が変更されます。

データは変更されても統計は変更されない場合、実行計画は変更されません。

+0

なぜこれがdownvotedされたか分かりません。 – MJH

関連する問題