删除MySQL索引需用DROP INDEX或ALTER TABLE DROP INDEX,注意索引类型与依赖关系;主键须用DROP PRIMARY KEY,外键索引需先删约束;操作前核对索引名、备份结构,生产环境应在低峰期测试验证。
删除 MySQL 索引就是通过 DROP INDEX 或 ALTER TABLE ... DROP INDEX 语句移除已存在的索引,操作本身不难,但需注意索引类型、依赖关系和执行权限。
删除前必须知道索引名和它所在的表。可使用以下命令查看:
SHOW INDEX FROM 表名;
结果中 Key_name 列即为索引名(主键索引通常叫 PRIMARY,唯一索引、普通索引名由你创建时指定或系统自动生成)。注意区分:主键约束(PRIMARY KEY)和普通索引不同,删除主键需用 ALTER TABLE ... DROP PRIMARY KEY,且表不能没有主键(除非引擎支持,如 MyISAM)。
语法如下(推荐在指定数据库下执行):
DROP INDEX 索引名 ON 表名;
UNIQUE KEY 创建,仍可用此法删除,但会同时移除约束)SHOW CREATE TABLE 表名;
SHOW INDEX 再核对这是更常用的方式,尤其适合删除主键、全文索引或需要一并处理其他变更的场景:
ALTER TABLE 表名 DROP INDEX 索引名;
ALTER TABLE 表名 DROP PRIMARY KEY;
ALTER TABLE 表名 DROP FOREIGN KEY 外键名; -- 如涉及外键索引
DROP INDEX 和 ALTER TABLE ... DROP INDEX 在功能上等价,但后者语法更统一,也兼容更
DROP INDEX 删除,必须先删外键约束(DROP FOREIGN KEY),系统会自动清理对应索引执行删除后务必验证是否生效:
SHOW INDEX FROM 表名;