web-dev-qa-db-ja.com

実行計画に欠落している統計に関する警告

理解できない状況があります。 SQL Serverの実行計画で、テーブルの統計が不足していることがわかりましたが、統計は既に作成されています。

Warning

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

enter image description here

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

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

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

25

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

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

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

SQL Serverが「統計がありません」という警告のすべての列を報告したとしたらいいのですが、残念ながら、今日の動作ではありません。

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

17
Paul White 9

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

  1. オブジェクトエクスプローラーが別のデータベースを指している-データベースの名前にDEVが含まれているので不審です。
  2. 使用されている計画は、統計が作成される前のものです(以前に生成されたか、ほとんどの場合、統計が作成されたときに再コンパイルがトリガーされませんでした)。

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

8
Aaron Bertrand

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

SET SHOWPLAN_ALL ON

enter image description here

不足している統計を確認できます。

enter image description here

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

3