Basierend auf dieser Abfrage, wenn ich eine geringe Anzahl von Gesamtlesevorgängen (sehr nahe an 0 oder 0, wie 1 oder 2) und eine hohe oder moderate Anzahl von Benutzeraktualisierungen (ich konnte mit dieser Abfrage keine Einfügungen oder Löschungen finden) mit sehe Bei einer großen Zeilenanzahl sollte ich theoretisch den Index entfernen.
SELECT DISTINCT
OBJECT_NAME(s.[object_id]) AS ObjectName
, p.rows TableRows
, i.name AS [INDEX NAME]
, (user_seeks + user_scans + user_lookups) AS TotalReads
, user_updates UserUpdates
FROM sys.dm_db_index_usage_stats s
INNER JOIN sys.indexes i ON i.[object_id] = s.[object_id]
AND i.index_id = s.index_id
INNER JOIN sys.partitions p ON p.object_id = i.object_id
WHERE OBJECTPROPERTY(s.[object_id],'IsUserTable') = 1
AND s.database_id = DB_ID()
AND i.name IS NOT NULL
ORDER BY (user_seeks + user_scans + user_lookups) ASC
Ich möchte hier die Richtigkeit dieser Annahme überprüfen. Zum Beispiel scheint ein Index, der seit über einem Jahr existiert, aber nie gelesen, aber stark aktualisiert wurde, eine schlechte Idee zu sein. Gibt es ein Szenario, in dem diese Annahme ungültig ist?
quelle
Ja, die Ansicht enthält nur Statistiken seit dem letzten Neustart. Um zu vermeiden, dass ich einen Job eingerichtet habe, bei dem eine Abfrage ausgeführt wurde, wie Sie sie monatlich am Morgen vor Beginn unseres Wartungsfensters veröffentlicht haben, um die Informationen jeden Monat vor dem Neustart des Servers zu erfassen. Dadurch konnte ich weiter zurückgehen und Trends im Laufe der Zeit betrachten. Ich hatte auch eine zweite Abfrage, die nach möglicherweise fehlenden Indizes suchte.
Eine andere zu berücksichtigende Sache ist, welche anderen Indizes auf dem Tisch sind. Es wird möglicherweise nicht verwendet, da es sich größtenteils oder vollständig um ein Duplikat eines anderen Index handelt. Ja. Mit SQL Server können Sie zwei verschiedene, aber identische Indizes erstellen, sodass diese möglicherweise vollständig redundant sind.
Sie können sich auch ansehen, wie der Abfrageplan für eine Abfrage aussehen könnte, die diesen Index verwendet, wenn dieser Index entfernt wurde. Hätte es einen anderen zu verwendenden Index oder müsste es wahrscheinlich auf einen vollständigen Tabellenscan zurückgreifen.
Indizes sind letztendlich genauso viel Kunst wie Wissenschaft, weil es wirklich schwierig ist, alles darüber zu wissen, was ausgeführt werden könnte, und es ändert sich sowieso häufig.
quelle