2008-09-24 7 views
43

Der Database Tuning Advisor empfiehlt, dass ich eine Reihe von Statistiken in meiner Datenbank erstelle. Ich bin so etwas wie ein SQL n00b, also war es das erste Mal, dass ich auf eine solche Kreatur stoße. Der Eintrag in MSDN war ein wenig stumpf - könnte jemand erklären, was genau das ist und warum es eine gute Idee ist?Was macht "Create Statistics" in SQL Server 2005?

Antwort

38

Cost Based Query Optimisation ist eine Technik, die Histogramme und Zeilenanzahl verwendet, um die Kosten für die Ausführung eines Abfrageplans heuristisch zu schätzen. Wenn Sie eine Abfrage an SQL Server senden, wertet es diese aus und generiert eine Reihe von Query Plans, für die Heuristiken verwendet werden, um die Kosten zu schätzen. Es wählt dann den günstigsten Abfrageplan aus.

Statistiken werden vom Abfrageoptimierer verwendet, um die Kosten der Abfragepläne zu berechnen. Wenn die Statistiken fehlen oder veraltet sind, sind keine korrekten Daten zur Schätzung des Plans vorhanden. In diesem Fall können Abfragepläne generiert werden, die moderat oder stark suboptimal sind.

SQL Server erstellt (in den meisten Fällen) automatisch Statistiken für die meisten Tabellen und Indizes, aber Sie können diese ergänzen oder Aktualisierungen erzwingen. Der Abfrageoptimierungsassistent hat vermutlich fehlende Statistiken oder identifizierte Joins in der Abfrage gefunden, für die Statistiken hinzugefügt werden sollen.

+0

Der letzte Abschnitt ist nur geringfügig technisch wahr: SQL Server erstellt keinen persistenten Index autonom (dh 'CREATE INDEX'), aber es kann einige Daten in einem" Index Spool "zwischenspeichern, aber diese Daten werden nicht zwischen verschiedenen Abfrageausführungen geteilt . Siehe diese QA: http://dba.stackexchange.com/questions/43772/why-dont-databases-create-their-own-indexes-automatisch – Dai

3

Kurz gesagt, es bereitet Ihre Datenbank effektiv vor. Durch die Erstellung von Statistiken weiß Ihre Datenbank (bevor sie einen Ausführungsplan ausarbeiten muss), was wahrscheinlich ihre effizienteste Route ist.

2

Im Grunde wird SQL nur mit der Art der Indizierung, der Zeilenanzahl usw. aktualisiert. Dies hilft SQL, die Ausführung Ihrer Abfragen besser einzuschätzen. Es ist eine gute Sache, die Statistiken auf dem neuesten Stand zu halten.

2

Vom BOL ...

erzeugt ein Histogramm und zugehörige Dichtegruppen (Sammlungen) über die geliefert Spalte oder der Spalten eines Tabelle oder indizierte Sicht gesetzt. Zeichenkettenzusammenfassung Statistiken werden auch auf Statistiken erstellt, die auf char, varchar, varchar (max), nchar, nvarchar, nvarchar (max), Text und ntext Spalten erstellt werden. Der Abfrageoptimierer verwendet diese statistischen Daten , um den effizientesten Plan zum Abrufen oder Aktualisieren von Daten auszuwählen. Aktuelle Statistiken ermöglichen dem Optimierer zu genau bewerten Sie die Kosten für verschiedene Abfrage Pläne, und wählen Sie einen qualitativ hochwertigen Plan.

8

Statistiken werden vom Optimierungsprogramm verwendet, um festzustellen, ob ein bestimmter Index für Ihre Abfrage verwendet werden soll. Ohne Statistiken kann der Optimierer nicht wissen, wie viele Ihrer Zeilen einer bestimmten Bedingung entsprechen, sodass er für den Fall "viele Zeilen" optimiert werden muss, was weniger als optimal sein kann.