it-swarm.com.de

Warnung vor fehlenden Statistiken im Ausführungsplan

Ich habe eine Situation, die ich nicht verstehen kann. Mein SQL Server-Ausführungsplan zeigt an, dass in der Tabelle fehlende Statistiken vorhanden sind, die Statistiken jedoch bereits erstellt wurden:

Warning

Wenn wir uns jedoch die Tabelle ansehen, werden wir feststellen, dass es eine Statistik gibt, die automatisch erstellt wurde:

enter image description here

Kann jemand helfen zu verstehen, wie es sein kann?

Die Statistiken "Auto_Update" und "Auto_Create" sind in der aktuellen Datenbank aktiviert.

Ich verwende SQL Server 2014.

25

Die Warnung entspricht nicht immer fehlenden einspaltigen Statistiken.

Es gibt keine einfache Möglichkeit, die genaue Statistik genau zu bestimmen, nach der der Optimierer gesucht und nicht in allen Fällen gefunden hat, aber es ist fast immer eine mehrspaltige Statistik , die einige Korrelationsinformationen über mehrere Gleichheiten hinweg liefert Prädikate in der Abfrage.

In Ihrem Fall entspricht es möglicherweise genau den Prädikaten im Filter nach dem Scan, in dem die Warnung angezeigt wird.

Es wäre schön, wenn SQL Server alle Spalten für die Warnung "Fehlende Statistik" melden würde, aber so funktioniert es heute leider nicht.

Möglicherweise ist ein gewisses Maß an Versuch und Irrtum erforderlich, um die mehrspaltige Statistik zu identifizieren, die Sie zum Entfernen der Warnung erstellen müssen. Beachten Sie, dass mehrspaltige Statistiken nicht automatisch erstellt werden können. Trotz der Warnung kann es vorkommen, dass sich die Qualität der Schätzung verbessert, auch wenn die fehlende Statistik angegeben wird.

17
Paul White 9

Da es offensichtlich ist, dass für die jeweilige Spalte bereits eine Statistik vorhanden ist, biete ich zwei Möglichkeiten an:

  1. Der Objekt-Explorer zeigt auf eine andere Datenbank. Ich bin misstrauisch, weil der Name der Datenbank DEV enthält. In einem Fall ist es also möglich, dass Sie dev betrachten und in einem anderen Fall nicht.
  2. Der verwendete Plan stammt aus der Zeit vor der Erstellung der Statistik (entweder wurde er früher generiert oder es ist weniger wahrscheinlich, dass beim Erstellen der Statistik eine Neukompilierung ausgelöst wurde).

Bitte überprüfen Sie, ob die einfache Antwort (1) nicht das Problem ist, und versuchen Sie, dieselbe Abfrage mit OPTION (RECOMPILE) auszugeben, um entweder zu bestätigen oder auszuschließen (2).

8
Aaron Bertrand

Ich habe gerade festgestellt, dass Sie, wenn Sie solche Warnungen zu Statistiken erhalten, Ihre Abfrage oder Prozedur mit den folgenden Einstellungen ausführen:

SET SHOWPLAN_ALL ON

(enter image description here

sie können sehen, was die fehlenden Statistiken sind:

(enter image description here

und mit die Skripte hier können Sie einen Blick darauf werfen, welche Statistiken derzeit vorhanden sind, und wenn sie fehlen, können Sie sie hinzufügen.

3