MYSQL如何安全地删除唯一键?要记住什么?
问题描述:
我有一个数据库中的表。MYSQL如何安全地删除唯一键?要记住什么?
CREATE TABLE `comment_sheets` (
`id` mediumint(9) NOT NULL AUTO_INCREMENT,
`doc_id` mediumint(9) NOT NULL,
`level` varchar(10) DEFAULT NULL,
`author` varchar(30) DEFAULT NULL,
`status` varchar(10) DEFAULT NULL,
`creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `cs` (`doc_id`,`level`,`author`)
) ENGINE=InnoDB AUTO_INCREMENT=3961075 DEFAULT CHARSET=utf8 ;
我的UNIQUE KEY cs(doc_id,level,author)现在是个问题。我想删除它,因为我需要重复的值。
我的问题是。当我想要删除唯一密钥时,我应该在脑海里想什么或者担心什么?
谢谢。
答
您需要修改表:
alter table comment_sheets drop INDEX `cs`
答
要删除唯一键
ALTER TABLE table_name
DROP INDEX index_name;
要删除主键
ALTER TABLE table_name
DROP INDEX `PRIMARY`;
答
这真的取决于如何关键是从使用分开强制数据的唯一性。
检查密钥是否用于任何外键关系。如果是,您需要先删除外键,然后才能删除唯一的外键。 (好吧,如果外键退出,mysql不会让你丢失索引)
检查哪些查询可能使用密钥以及它的移除将如何影响其性能。您可能需要在这些字段上添加一个非唯一的密钥。
我这种特殊情况下删除索引是相对简单的任务,因为它不是主键,并且它不是一个全文索引。唯一可能需要很长时间的是删除索引数据,如果您的表格很大(从自动增量值判断,它不是一个小表格)
感谢您的建议 –