On this page
The DROP INDEX statement removes indexes from tables.
Synopsis
Required Privileges
The user must have the CREATE privilege on each specified table.
Parameters
| Parameter | Description |
|---|---|
IF EXISTS | Drop the named indexes if they exist; if they do not exist, do not return an error. |
table_name | The name of the table with the index you want to drop. Find table names with SHOW TABLES. |
index_name | The name of the index you want to drop. Find index names with SHOW INDEX.You cannot drop a table's primary index. |
CASCADE | Drop all objects (such as constraints) that depend on the indexes. To drop a UNIQUE INDEX, you must use CASCADE.CASCADE does not list objects it drops, so should be used cautiously. |
RESTRICT | (Default) Do not drop the indexes if any objects (such as constraints) depend on them. |
Examples
Remove an Index (No Dependencies)
> SHOW INDEX FROM tbl; +-------+--------------+--------+-----+--------+-----------+---------+----------+ | Table | Name | Unique | Seq | Column | Direction | Storing | Implicit | +-------+--------------+--------+-----+--------+-----------+---------+----------+ | tbl | primary | true | 1 | id | ASC | false | false | | tbl | tbl_name_idx | false | 1 | name | ASC | false | false | | tbl | tbl_name_idx | false | 2 | id | ASC | false | true | +-------+--------------+--------+-----+--------+-----------+---------+----------+ (3 rows) > DROP INDEX tbl@tbl_name_idx; > SHOW INDEX FROM tbl; +-------+---------+--------+-----+--------+-----------+---------+----------+ | Table | Name | Unique | Seq | Column | Direction | Storing | Implicit | +-------+---------+--------+-----+--------+-----------+---------+----------+ | tbl | primary | true | 1 | id | ASC | false | false | +-------+---------+--------+-----+--------+-----------+---------+----------+ (1 row) Remove an Index and Dependent Objects with CASCADE
Warning:
CASCADE drops all dependent objects without listing them, which can lead to inadvertent and difficult-to-recover losses. To avoid potential harm, we recommend dropping objects individually in most cases.> SHOW INDEX FROM orders; +--------+---------------------+--------+-----+----------+-----------+---------+----------+ | Table | Name | Unique | Seq | Column | Direction | Storing | Implicit | +--------+---------------------+--------+-----+----------+-----------+---------+----------+ | orders | primary | true | 1 | id | ASC | false | false | | orders | orders_customer_idx | false | 1 | customer | ASC | false | false | | orders | orders_customer_idx | false | 2 | id | ASC | false | true | +--------+---------------------+--------+-----+----------+-----------+---------+----------+ (3 rows) > DROP INDEX orders@orders_customer_idx; pq: index "orders_customer_idx" is in use as a foreign key constraint > SHOW CONSTRAINTS FROM orders; +--------+---------------------------+-------------+------------+----------------+ | Table | Name | Type | Column(s) | Details | +--------+---------------------------+-------------+------------+----------------+ | orders | fk_customer_ref_customers | FOREIGN KEY | [customer] | customers.[id] | | orders | primary | PRIMARY KEY | [id] | NULL | +--------+---------------------------+-------------+------------+----------------+ > DROP INDEX orders@orders_customer_idx CASCADE; > SHOW CONSTRAINTS FROM orders; +--------+---------+-------------+-----------+---------+ | Table | Name | Type | Column(s) | Details | +--------+---------+-------------+-----------+---------+ | orders | primary | PRIMARY KEY | [id] | NULL | +--------+---------+-------------+-----------+---------+