2013-08-11 4 views
13

Ich hatte versucht sp_helpindex aber es zeigt die Spalten, die Index nicht die enthaltenen Spalten haben. Bitte sagen Sie mir, wie Sie alle Indizes mit eingeschlossenen Spalten (Nicht-Schlüssel) auflisten?Alle Indizes mit eingeschlossenen Spalten (Non-Keys) auflisten

+0

Diese Frage Wegthema zu sein scheint, weil kein Versuch gemacht. –

+0

Willkommen bei Stack Overflow! Darf ich Sie auf dieses beziehen: http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist –

Antwort

21

Versuchen Sie, diese T-SQL-Abfrage für die Katalogansichten:

SELECT 
    IndexName = i.Name, 
    ColName = c.Name 
FROM 
    sys.indexes i 
INNER JOIN 
    sys.index_columns ic ON ic.object_id = i.object_id AND ic.index_id = i.index_id 
INNER JOIN 
    sys.columns c ON c.object_id = ic.object_id AND c.column_id = ic.column_id 
WHERE 
    ic.is_included_column = 1 

Es prüft grundsätzlich alle Indizes (sys.indexes) und verbindet dann in ihre Spalten und überprüft, um zu sehen, welche Spalten als eingeschlossene Spalten entworfen (ic.is_included_column = 1) und listet dann alle diese Indizes und alle diese Spalten auf.

+1

Vielen Dank für diesen Code. Ich habe nach einer Möglichkeit gesucht, die Indizes für eine bestimmte Tabelle und Spalte zu identifizieren. Dies ist das sauberste und genaueste SQL, das ich gefunden habe. – maccaroo

+0

Ich bekomme gemischte Ergebnisse mit diesem. Es scheint, dass, wenn es mehr als einen Index für eine gegebene Tabelle gibt, nur einer von dieser Tabelle zurückgegeben wird. –

4

Kopiert von http://www.midnightdba.com/Jen/2009/12/get-index-included-column-info/

SELECT 
OBJECT_NAME(i.[object_id]) TableName , 
i.[name] IndexName , 
c.[name] ColumnName , 
ic.is_included_column , 
i.index_id , 
i.type_desc , 
i.is_unique , 
i.data_space_id , 
i.ignore_dup_key , 
i.is_primary_key , 
i.is_unique_constraint 
FROM 
sys.indexes i 
JOIN sys.index_columns ic ON ic.object_id = i.object_id and i.index_id = ic.index_id 
JOIN sys.columns c ON ic.object_id = c.object_id AND ic.column_id = c.column_id 
ORDER BY 
tableName , 
ic.index_id , 
ic.index_column_id 
Verwandte Themen