実行計画で統計が欠落している場合の警告


23

私には理解できない状況があります。SQL Serverの実行計画では、テーブルの統計が欠落していると表示されますが、統計は既に作成されています。

警告

しかし、テーブルを見ると、自動的に作成された統計があることがわかります。

ここに画像の説明を入力してください

誰かがそれがどのようになり得るかを理解するのを助けることができますか?

Auto_UpdateおよびAuto_Create統計は、現在のDBでオンになっています。

SQL Server 2014を使用しています。

回答:


15

警告は、単一列統計の欠落に常に対応するとは限りません。

オプティマイザーが探していて、すべての場合に見つけられなかった正確な統計を正確に決定する簡単な方法はありませんが、ほとんどの場合、クエリの複数の等式述語にわたって相関情報を提供する複数列の統計です。

おそらく、あなたの場合、警告が表示されるスキャン後のフィルターの述語と正確に一致します。

SQL Serverが 'missing statistic'警告のすべての列を報告してくれたらいいのですが、残念ながら今日の動作ではありません。

警告を削除するために作成する必要がある複数列の統計を特定するには、ある程度の試行錯誤が必要になる場合があります。複数列の統計は自動的に作成できないことに注意してください。警告にもかかわらず、欠落している統計が提供された場合でも、推定の品質が向上する場合があります。


8

特定の列の統計が既に存在することは明らかであるため、2つの可能性を提供します。

  1. オブジェクトエクスプローラーは別のデータベースを指しています-データベースDEVに名前があるので、私は疑っています。
  2. 使用されているプラ​​ンは、統計が作成される前のものです(以前に生成されたか、統計が作成されたときに再コンパイルがトリガーされる可能性が低いもののいずれか)。

簡単な答え(1)が問題ではないOPTION (RECOMPILE)ことを確認し、確認または除外するために同じクエリを発行してみてください(2)。


1
アーロン・ベルトナンド、返信ありがとうございます。ただし、オブジェクトエクスプローラーは現在のデータベースを指しているため、OPTION(RECOMPILE)を追加しても問題は解決しません。クエリがストアドプロシージャを実行していることも追加します。
アータッシュハチャトリアン

2

以下の設定でクエリまたはプロシージャを実行すると、統計に関するこのような警告が表示されることに気付きました。

SET SHOWPLAN_ALL ON

ここに画像の説明を入力してください

不足している統計は次のとおりです。

ここに画像の説明を入力してください

また、ここでスクリプトを使用する現在どの統計が設定されているかを確認できます。欠落している場合は追加できます。

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