見積もりと実際の実行計画の違い


8

SQL Serverを初めて使用するので、最初のクエリを調整したいと思います。

SQL Server 20xxで、「推定実行プランの表示」と「実際の実行プランを含める」の違いは何ですか?

回答:


6

推定実際にクエリを実行せず-実行計画は、単にSQL Serverが持っている統計に基づいて生成されます。クエリオプティマイザーは、クエリおよびデータ分布などに関するすべての情報に基づいて、このクエリで最も可能性高いことを尋ねられます。

これは問題なく機能し、クエリを実行する必要はありません(時間がかかる可能性があります)が、統計が古くなっていると、計画が大幅にゆがむ可能性があります。

実際の実行計画はまさにそれである- 実際に、実際にクエリを実行するときに使用した実行計画。これにより、「古くなった」統計などのヒントになる可能性のあるものが表示されます。ただし、これを取得するには、クエリを実行する必要があります。これには時間がかかる場合があります。


1
ここでの唯一の真の問題は、実際の計画が推定されたものではない場合であると私は思ったでしょう。残りは明白ですね。
John

クエリオプティマイザーを通過した後、クエリの実行時に簡単な質問が1つあります。キャッシュされたプランが古くなっている場合、クエリ最適化ステップは統計の更新を再実行しますか?または実行計画を生成する別の方法はありますか?
brykneval

1

推定計画は、クエリを実際に実行せずにサーバーで実行する方法を提供します。これにより、より適切な計画を作成するために調整する必要があるか、推定された計画に問題がないかがわかります。

実際の計画は、サーバーがクエリを実行したときに実際に何が起こったかを示します。これには、テーブルからの実際の行数、ソートがあった場合に使用されたメモリの量などの詳細が含まれます。実行中にどの程度の並列処理が使用されたか。

しかし、最良のことは、実際の実行計画で確認できる「推定行数」と「実際の行数」の違いを見ることです。これらの2つの値が近いほど、統計は最新であり、特定の統計ではこれが最良の計画ですが、これらの値に大きな差異がある場合は、統計が最新ではない可能性があるため、これは最良の計画。この場合、統計を更新することで、より適切な推定計画、つまり実際の計画を生成できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.