MS SQL: alle Indizes einer Datenbank per SQL abfragen

Abteilung praktische Tipps: mit folgendem SQL kann man sich fix alle Indizes einer MS SQL Datenbank auslesen:

SELECT i.object_id, i.name, o.name
FROM sys.indexes as i, sys.objects as o
WHERE i.name not like 'queue%'
and i.object_id = o.object_id
AND o.name NOT like 'sys%'

Sehr praktisch und sehr übersichtlich, wenn man schnell sehen kann, auf welcher Tabelle welcher Index liegt. Kann man echt oft brauchen, war mir sofort ein Snippet wert.

Reblog this post [with Zemanta]

4 thoughts on “MS SQL: alle Indizes einer Datenbank per SQL abfragen

  1. Hier eine kleine Abwandlung des Scripts

    SELECT i.name as name, o.name as tablename, i.object_id as id, i.is_unique as unique, *
    FROM sys.indexes as i, sys.objects as o
    WHERE i.object_id = o.object_id
    and o.type = ‚U‘
    –and i.type = 1 — das sind PK-Indizes
    –and i.type = 2 — das sind Column-Indizes (CREATE UNIQUE INDEX …)
    order by o.name asc, i.name asc

    Anmerkungen:

    1: o.type = ‚U‘ selektiert nur Benutzertabellen und lässt alle Systemtabellen außen vor

    2: i.type = 1 selektiert Private-Key-Indizes

    3: i.type = 2 selektiert zusätzliche Indizes, die mit CREATE {UNIQUE] INDEX erzeugt wurden.

  2. Hier eine kleine Abwandlung des Scripts

    SELECT i.name as name, o.name as tablename, i.object_id as id, i.is_unique as unique, *
    FROM sys.indexes as i, sys.objects as o
    WHERE i.object_id = o.object_id
    and o.type = ‚U‘
    –and i.type = 1 — das sind PK-Indizes
    –and i.type = 2 — das sind Column-Indizes (CREATE UNIQUE INDEX …)
    order by o.name asc, i.name asc

    Anmerkungen:

    1: o.type = ‚U‘ selektiert nur Benutzertabellen und lässt alle Systemtabellen außen vor

    2: i.type = 1 selektiert Private-Key-Indizes

    3: i.type = 2 selektiert zusätzliche Indizes, die mit CREATE {UNIQUE] INDEX erzeugt wurden.

Schreibe einen Kommentar