Список всех индексов с включенными столбцами (без ключа)

Я пробовал sp_helpindex, но он показывает столбцы с индексом, а не включенными столбцами. Скажите, пожалуйста, как перечислять все индексы с включенными столбцами (неkeys)?

Ответ 1

Попробуйте этот запрос T-SQL в отношении представлений каталога:

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

Он в основном проверяет все индексы (sys.indexes), а затем ссылается на их столбцы и проверяет, какие столбцы сконструированы как включенные столбцы (ic.is_included_column = 1), а затем перечисляет все эти индексы и все эти столбцы.

Ответ 2

Скопировано из 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