MYSQL Как безопасно удалить UNIQUE KEY? Что иметь в виду?
У меня есть таблица в базе данных.
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 ;
Мой уникальный ключ cs (doc_id,level,author) сейчас является проблемой. Я хочу удалить его, потому что мне нужны повторяющиеся значения.
Мой вопрос Что я должен иметь в виду или о чем мне следует беспокоиться, когда я хочу удалить уникальный ключ?
Благодарю.
3 ответа
Сбросить уникальный ключ
ALTER TABLE table_name
DROP INDEX index_name;
Сбросить первичный ключ
ALTER TABLE table_name
DROP INDEX `PRIMARY`;
Это действительно зависит от того, как используется ключ, кроме обеспечения уникальности данных.
Проверьте, используется ли ключ в каких-либо отношениях внешнего ключа. Если да, вам нужно удалить внешний ключ, прежде чем вы сможете удалить уникальный. (Ну, mysql не позволит вам удалить индекс, если внешний ключ все равно выйдет)
Проверьте, какие запросы могут использовать ключ и как его удаление повлияет на их производительность. Возможно, вам придется добавить неуникальный ключ в эти поля назад.
В данном конкретном случае удаление индекса является относительно простой задачей, поскольку он не является первичным ключом и не является полнотекстовым индексом. Единственное, что может занять много времени, это удалить данные индекса, если ваша таблица большая (судя по значению автоматического приращения, это не маленькая таблица)
Вам нужно изменить таблицу:
alter table comment_sheets drop INDEX `cs`