sp_indexes (Transact-SQL)


Returns index information for the specified remote table.

Applies to: SQL Server (SQL Server 2008 through current version).

Topic link icon Transact-SQL Syntax Conventions

sp_indexes [ @table_server = ] 'table_server'   
     [ , [ @table_name = ] 'table_name' ]   
     [ , [ @table_schema = ] 'table_schema' ]   
     [ , [ @table_catalog = ] 'table_db' ]   
     [ , [ @index_name = ] 'index_name' ]   
     [ , [ @is_unique = ] 'is_unique' ]  

[ @table_server= ] 'table_server'
Is the name of a linked server running SQL Server for which table information is being requested. table_server is sysname, with no default.

[ @table_name= ] 'table_name'
Is the name of the remote table for which to provide index information. table_name is sysname, with a default of NULL. If NULL, all tables in the specified database are returned.

[ @table_schema= ] 'table_schema'
Specifies the table schema. In the SQL Server environment, this corresponds to the table owner. table_schema is sysname, with a default of NULL.

[ @table_catalog= ] 'table_db'
Is the name of the database in which table_name resides. table_db is sysname, with a default of NULL. If NULL, table_db defaults to master.

[ @index_name= ] 'index_name'
Is the name of the index for which information is being requested. index is sysname, with a default of NULL.

[ @is_unique= ] 'is_unique'
Is the type of index for which to return information. is_unique is bit, with a default of NULL, and can be one of the following values.

1Returns information about unique indexes.
0Returns information about indexes that are not unique.
NULLReturns information about all indexes.
Column nameData typeDescription
TABLE_CATsysnameName of the database in which the specified table resides.
TABLE_SCHEMsysnameSchema for the table.
TABLE_NAMEsysnameName of the remote table.
NON_UNIQUEsmallintWhether the index is unique or not unique:

0 = Unique

1 = Not unique
INDEX_QUALIFERsysnameName of the index owner. Some DBMS products allow for users other than the table owner to create indexes. In SQL Server, this column is always the same as TABLE_NAME.
INDEX_NAMEsysnameName of the index.
TYPEsmallintType of index:

0 = Statistics for a table

1 = Clustered

2 = Hashed

3 = Other
ORDINAL_POSITIONintOrdinal position of the column in the index. The first column in the index is 1. This column always returns a value.
COLUMN_NAMEsysnameIs the corresponding name of the column for each column of the TABLE_NAME returned.
ASC_OR_DESCvarcharIs the order used in collation:

A = Ascending

D = Descending

NULL = Not applicable

 SQL Server always returns A.
CARDINALITYintIs the number of rows in the table or unique values in the index.
PAGESintIs the number of pages to store the index or table.
FILTER_CONDITIONnvarchar(4000)SQL Server does not return a value.

Requires SELECT permission on the schema.

The following example returns all index information from the Employees table of the AdventureWorks2012 database on the Seattle1 linked server.

EXEC sp_indexes @table_server = 'Seattle1',   
   @table_name = 'Employee',   
   @table_schema = 'HumanResources',  
   @table_catalog = 'AdventureWorks2012';  

Distributed Queries Stored Procedures (Transact-SQL)
sp_catalogs (Transact-SQL)
sp_column_privileges (Transact-SQL)
sp_foreignkeys (Transact-SQL)
sp_linkedservers (Transact-SQL)
sp_tables_ex (Transact-SQL)
sp_table_privileges (Transact-SQL)
System Stored Procedures (Transact-SQL)

Community Additions