Get a List of Table Indexes in SQL Server¶
Following SQL Server statement will return a list of all index names for a table dbo.sales.
SELECT idx.name
FROM
sys.indexes idx
JOIN
sys.objects obj
ON idx.object_id = obj.object_id
WHERE
obj.type_desc = 'USER_TABLE'
AND schema_name(obj.schema_id) = 'dbo'
AND obj.name = 'sales'
;
List only non-clustered indexes¶
In case you need only non-clustered index:
SELECT idx.name
FROM
sys.indexes idx
JOIN
sys.objects obj
ON idx.object_id = obj.object_id
WHERE
idx.type_desc = 'NONCLUSTERED'
AND obj.type_desc = 'USER_TABLE'
AND schema_name(obj.schema_id) = 'dbo'
AND obj.name = 'sales'
;
List indexes in CSV¶
To make a CSV list of indexes:
DECLARE @sql AS VARCHAR(MAX)='';
SELECT @sql = @sql + idx.name + ','
FROM
sys.indexes idx
JOIN
sys.objects obj
ON idx.object_id = obj.object_id
WHERE
idx.type_desc = 'NONCLUSTERED'
AND obj.type_desc = 'USER_TABLE'
AND schema_name(obj.schema_id) = 'dbo'
AND obj.name = 'sales'
;
SELECT @sql;
Previous:
Get the number of rows affected by the last T-SQL
Next:
Disable all non-clustered indexes for a table in SQL Server