Wir haben eine sehr große Datenbank mit Hunderten von nicht verwendeten Indizes gemäß DMV-Statistiken, die sich seit dem letzten Neustart des Servers im Juli angesammelt haben. Einer unserer Datenbankadministratoren gab die folgenden warnenden Erklärungen ab, die für mich keinen Sinn ergeben:
- Bevor wir einen Index löschen, müssen wir sicherstellen, dass er keine Eindeutigkeitsbeschränkung erzwingt, da der Abfrageoptimierer diesen Index möglicherweise benötigt.
- Immer wenn ein Index erstellt wird, werden Statistiken zu diesem Index auch in SQL Server erstellt. Eine Abfrage verwendet möglicherweise nicht den Index, aber möglicherweise die Statistik. Es kann also vorkommen, dass nach dem Löschen eines Index eine bestimmte Abfrageleistung sehr schlecht ist. SQL Server speichert die Nutzungsstatistik nicht. Obwohl die Funktion "Automatisch Statistiken erstellen" in unserer Datenbank aktiviert ist, weiß ich nicht, welche Parameter intern erfüllt werden müssen, bevor das Abfrageoptimierungsprogramm die fehlenden Statistiken erstellt.
In Bezug auf Nummer 1 scheint es mir, als würde SQL Server tatsächlich nach dem Index suchen, um die Eindeutigkeit zu bestimmen, bevor eine Einfügung / Aktualisierung durchgeführt wird, und daher würde der Index nicht als nicht verwendet angezeigt.
Ist dies in Bezug auf Nummer 2 wirklich möglich?
Übrigens, wenn ich sage, dass kein Index verwendet wird, meine ich keine Suchvorgänge und keine Scans.