I need a query to see if a table already has any indexes on it.
Simply you can find index name and column names of a particular table using below command
SP_HELPINDEX 'tablename'
It work's for me
If you're using MySQL you can run SHOW KEYS FROM table
or SHOW INDEXES FROM table
Most modern RDBMSs support the INFORMATION_SCHEMA
schema. If yours supports that, then you want either INFORMATION_SCHEMA.TABLE_CONSTRAINTS
or INFORMATION_SCHEMA.KEY_COLUMN_USAGE
, or maybe both.
To see if yours supports it is as simple as running
select count(*) from INFORMATION_SCHEMA.TABLE_CONSTRAINTS
EDIT: SQL Server does have INFORMATION_SCHEMA
, and it's easier to use than their vendor-specific tables, so just go with it.
check this as well This gives an overview of associated constraints across a database. Please also include facilitating where condition with table name of interest so gives information faster.
select
a.TABLE_CATALOG as DB_name,a.TABLE_SCHEMA as tbl_schema, a.TABLE_NAME as tbl_name,a. CONSTRAINT_NAME as constraint_name,b.CONSTRAINT_TYPE
from INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE a
join INFORMATION_SCHEMA.TABLE_CONSTRAINTS b on
a.CONSTRAINT_NAME=b.CONSTRAINT_NAME