MYSQL如何安全地删除唯一键?要记住什么?

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`; 

这真的取决于如何关键是从使用分开强制数据的唯一性。

  1. 检查密钥是否用于任何外键关系。如果是,您需要先删除外键,然后才能删除唯一的外键。 (好吧,如果外键退出,mysql不会让你丢失索引)

  2. 检查哪些查询可能使用密钥以及它的移除将如何影响其性能。您可能需要在这些字段上添加一个非唯一的密钥。

我这种特殊情况下删除索引是相对简单的任务,因为它不是主键,并且它不是一个全文索引。唯一可能需要很长时间的是删除索引数据,如果您的表格很大(从自动增量值判断,它不是一个小表格)

+0

感谢您的建议 –