La fameuse requête est ce-dessous, elle met donc en avant une information pertinente sur tous les indexs présents dans une base de données SQL Server, avec entre autres les colonnes des bases.


WITH liste_indexs
     AS (SELECT i_c.[index_id] + i_c.[object_id] AS [IndexId],
                l_t.[name]                       AS [TableName],
                idxs.[name]                      AS [IndexName],
                li.[name]                        AS [ColumnName],
                idxs.[type_desc],
                idxs.[is_primary_key],
                idxs.[is_unique]
         FROM   [sys].[indexes] i
                INNER JOIN [sys].[index_columns] i_c
                  ON idxs.[index_id] = i_c.[index_id]
                     AND idxs.[object_id] = i_c.[object_id]
                INNER JOIN [sys].[columns] li
                  ON i_c.[column_id] = li.[column_id]
                     AND idxs.[object_id] = li.[object_id]
                INNER JOIN [sys].[tables] l_t
                  ON idxs.[object_id] = l_t.[object_id])
SELECT li.[TableName],
       li.[IndexName],
       li.[type_desc],
       li.[is_primary_key],
       li.[is_unique],
       Stuff((SELECT ',' + a.[ColumnName]
              FROM   liste_indexs a
              WHERE  li.[IndexId] = a.[IndexId]
              FOR XML PATH('')), 1, 1, '') AS [Columns]
FROM   liste_indexs li
GROUP  BY li.[IndexId],
          li.[TableName],
          li.[IndexName],
          li.[type_desc],
          li.[is_primary_key],
          li.[is_unique]
ORDER  BY li.[TableName] ASC,
          li.[is_primary_key] DESC