DECLARE @TableName VARCHAR(20) = NULL SELECT [SchemaName] = SCH.name, [TableName] = TBL.name, [IndexName] = INX.name, [KeyColumnList] = STUFF(( SELECT ', ' + CDC.name + ' ' + CASE WHEN IDC.is_descending_key = 1 THEN 'DESC' ELSE 'ASC' END FROM sys.tables AS T INNER JOIN sys.indexes IDX ON T.object_id = IDX.object_id INNER JOIN sys.index_columns IDC ON IDX.object_id = IDC.object_id AND IDX.index_id = IDC.index_id INNER JOIN sys.columns CDC ON T.object_id = CDC.object_id AND IDC.column_id = CDC.column_id WHERE IDX.object_id = INX.object_id AND IDX.index_id = INX.index_id AND IDC.is_included_column = 0 ORDER BY IDC.key_ordinal FOR XML PATH('')), 1, 2, ''), [IncludeColumnList] = STUFF(( SELECT ', ' + CDC.name FROM sys.tables AS T INNER JOIN sys.indexes IDX ON T.object_id = IDX.object_id INNER JOIN sys.index_columns IDC ON IDX.object_id = IDC.object_id AND IDX.index_id = IDC.index_id INNER JOIN sys.columns CDC ON T.object_id = CDC.object_id AND IDC.column_id = CDC.column_id WHERE IDX.object_id = INX.object_id AND IDX.index_id = INX.index_id AND IDC.is_included_column = 1 ORDER BY IDC.key_ordinal FOR XML PATH('')), 1, 2, ''), [IsDisabled] = INX.is_disabled, [IsUnique] = INX.is_unique FROM sys.indexes INX INNER JOIN sys.tables TBL ON TBL.object_id = INX.object_id INNER JOIN sys.schemas SCH ON SCH.schema_id = TBL.schema_id WHERE TBL.is_ms_shipped = 0 AND (TBL.name = @TableName OR @TableName IS NULL) AND INX.type_desc IN ('NONCLUSTERED', 'CLUSTERED') OPTION (FORCE ORDER)