Wie überprüfe ich, ob in SQL Server 2005 ein nicht gruppierter Index vorhanden ist?


Antworten:


156
IF NOT EXISTS(SELECT * FROM sys.indexes WHERE name = 'MyTableIndex' AND object_id = OBJECT_ID('tablename'))
    BEGIN
        -- Index with this name, on this table does NOT exist
    END

1
+1 Das funktioniert gut. Sollte oder sollte nicht über das Tabellenschema besorgt sein?
Gotqn

10
@gotqn - Um das Schema zu berücksichtigen, können Sie es einfach als zweiteiligen Namen in den OBJECT_ID-Aufruf aufnehmen, z. B. OBJECT_ID ('myschema.tabellenname')
AdaTheDev

Vielen Dank für diese Erklärung: -]
gotqn

17

Versuche dies:

IF NOT EXISTS(SELECT * FROM sys.indexes WHERE Name = 'MyTableIndex')
   -- put your CREATE INDEX statement here

6
Ich empfehle auch, object_id (gemäß der Antwort von AdaTheDev) zu überprüfen, da Indexnamen nicht eindeutig sind.
McNux
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.