Hier ist das Skript, das Ihnen die Anzahl der nicht gruppierten Indizes für jede Tabelle in der gesamten Datenbank angibt.
SELECT COUNT(i.TYP) NoOfIndex,
= s.name , table_name = o.name
VON sys.indizes i
INNERE VERKNÜPFUNG sys.objekte o AUF i. = o. INNER JOIN sys.schemas s ON o. = s. WOBEI o.TYPE IN ('U')
UND i.TYPE = 2
GROUP BY s.name , o.name
SORTIEREN NACH schema_name, table_name
Hier ist die kleine Geschichte, warum dieses Skript benötigt wurde.
Ich habe kürzlich meinen Freund in seinem Büro getroffen und er stellte mich seinem Kollegen im Büro als jemanden vor, der ein Experte für SQL Server-Indizierung ist. Ich sagte höflich, ich lerne noch etwas über Indizierung und habe noch einen langen Weg vor mir. Der Kollege meines Freundes sagte sofort – er hatte einen Vorschlag für mich in Bezug auf Index. Ihm zufolge suchte er nach einem Skript, das alle nicht gruppierten Tabellen in allen Tabellen in der Datenbank zählt, und das konnte er nicht finden SQLAuthority.com .
Ich war etwas überrascht, da ich mich wirklich nicht an alle Details über das erinnere, was ich bisher geschrieben habe. Ich zog schnell mein Handy hoch und versuchte, in meiner benutzerdefinierten Suchmaschine nach dem Skript zu suchen, und er hatte Recht. Ich habe nie ein Skript geschrieben, das alle nicht gruppierten Indizes für Tabellen in der gesamten Datenbank zählt. Eine übermäßige Indizierung wird im Allgemeinen nicht empfohlen. Wenn Sie zu viele Indizes haben, wirkt sich dies definitiv negativ auf Ihre Leistung aus. Die obige Abfrage gibt Ihnen schnell Details zur Anzahl der Indizes für Tabellen in Ihrer gesamten Datenbank. Sie können schnell einen Blick darauf werfen und die Zahlen als Referenz verwenden.
Bitte beachten Sie, dass die Nummer des Index kein Hinweis auf schlechte Indizes ist. Es gibt eine Menge Weisheit, die ich hier schreiben kann, aber das ist nicht der Umfang dieses Blogbeitrags. Es gibt viele verschiedene Regeln mit Indizes und viele verschiedene Szenarien. Zum Beispiel – eine Tabelle, die Heap (kein Clustered Index) ist, wird oft nicht auf OLTP-Workload empfohlen (hier ist der Blog-Post, um sie zu identifizieren), löschen Sie nicht verwendete Indizes mit sorgfältiger Beobachtung (hier ist das Skript dafür), identifizieren Sie fehlende Indizes und fügen Sie sie nach sorgfältigem Testen hinzu (hier ist das Skript dafür). Obwohl ich hier nur wenige Links angegeben habe, ist dies nur die Spitze des Eisbergs. Wenn Sie nur die oben genannten vier Ratschläge befolgen, kann Ihr Schiff immer noch sinken. Wer das Thema vertiefen möchte, kann sich die Videos hier nach dem Einloggen ansehen.
Hinweis: Sie ändern den where-Bedingungstyp für den nicht gruppierten Spaltenspeicherindex in 6.