sql server avg_user_impact
In der DMV sys.dm_db_missing_index_group_stats
gibt es ein Feld namens avg_user_impact
. Pro BOL, dies zeigt die
Durchschnittliche prozentuale Vorteil, dass der Benutzer Abfragen erleben konnte, wenn dieses fehlende index-Gruppe umgesetzt wurde. Der Wert bedeutet, dass die Abfrage Kosten würde im Durchschnitt fallen um diesen Prozentsatz, wenn dieses fehlende index-Gruppe umgesetzt wurde.
Wenn ich eine Abfrage ausführen, um das fehlende Indizes, hätte den größten Einfluss auf die Leistung, sehe ich ein paar, die behaupten, die avg_user_impact
wird in die Tausende.
Baute ich einen index mit einem von diesen Empfehlungen, und es war nie laut DMV sys.dm_db_index_usage_stats
. Sobald ich das deaktiviert den index, es sofort zeigte sich wieder als ein index fehlt.
Ist es möglich, dass, sobald die avg_user_impact
Feld zeigt über 100, es ein Fehler ist? Oder ist das ein Beispiel dafür, wie eine empfohlene index muss noch getestet werden, für die Nützlichkeit? Was mache ich falsch oder Missverständnis?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die empfohlenen Indizes und Benutzer-Auswirkungen werden sowohl Schätzungen der Kosten-Optimierer und, wie Sie sehen, es gibt keine Garantie, dass Sie immer richtig. Ich denke, die Auswirkung auf Benutzer-Spalte kann über 100 von design (obwohl, wir müssten hoffen, dass ein Entwickler MS SQL Server-team antwortet hier für die richtige Antwort.) Es ist immer wichtig zu testen, ob die Erstellung der Indizes gezeigt, in der DMV funktionieren wird oder nicht. Ich hatte das gleiche Erlebnis, wenn ein index angezeigt wird es, aber sobald Sie erzeugt wurden, nicht wirklich gewöhnen, vielleicht wegen der details der Anfrage oder der Verteilung der Daten in den Tabellen, etc. Die Aussicht ist in den meisten Fällen Recht, vor allem für einfache Fälle, aber nicht immer.
Auch, vorsichtig sein, über das erstellen von wirklich breiten Indizes, wie Sie könnten verletzt insert/update die Leistung mehr, als Sie helfen, wählen Sie die Leistung, je nachdem, wie ausgelastet der server ist.
Tabelle auch die Statistiken aktualisiert werden, um sicherzustellen, dass SQL-Engine, verwenden Sie die neu erstellte Indizes.
Nach dem erstellen von Indizes LAUFEN
VERWENDEN AdventureWorks2012 -;
GEHEN
EXEC sp_updatestats;
GEHEN
Update STATISTICS-Befehl stellen Sie sicher, dass alle zwischengespeicherten SQL plan ungültig werden und neue sql-Ausführungspläne werden erstellt, indem die neu erstellten Indizes.