i need a query to see if a table already has any indexes on it.
If you're using MySQL you can run SHOW KEYS FROM table
or SHOW INDEXES FROM table
On Oracle:
Determine all indexes on table:
SELECT index_name FROM user_indexes WHERE table_name = :table
Determine columns indexes and columns on index:
SELECT index_name , column_position , column_name FROM user_ind_columns WHERE table_name = :table ORDER BY index_name, column_order
References:
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 the their vendor-specific tables, so just go with it.