Mam tabelę w bazie danych.
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 ;
Mój UNIQUE KEY cs (doc_id, level, author) jest teraz problemem. Chcę go usunąć, ponieważ potrzebuję duplikatów wartości.
Moje pytanie brzmi. Co powinienem mieć na myśli lub o co się martwić, kiedy chcę usunąć unikalny klucz?
Dzięki.
Odpowiedzi:
1 dla odpowiedzi № 1To naprawdę zależy od tego, jak klucz jest używany, oprócz wymuszania unikalności danych.
Sprawdź, czy klucz jest używany w dowolnym kluczu obcymrelacje. Jeśli tak, musisz upuścić klucz obcy, zanim będzie można go usunąć. (No cóż, mysql wygrał „nie możesz upuścić indeksu, jeśli klucz zagraniczny i tak zakończy działanie)
Sprawdź, jakie zapytania mogą używać klucza i jak jego usunięcie wpłynęłoby na ich wydajność. Konieczne może być dodanie nieunikalnego klucza na tych polach.
W tym konkretnym przypadku rezygnuję z indeksustosunkowo proste zadanie, ponieważ nie jest kluczem podstawowym i nie jest indeksem pełnotekstowym. Jedyne, co może potrwać długo, to usunięcie danych indeksu, jeśli Twój stół jest duży (sądząc po wartości automatycznego przyrostu, nie jest to mała tabela)
0 dla odpowiedzi nr 2
Musisz zmienić tabelę:
alter table comment_sheets drop INDEX `cs`
0 dla odpowiedzi № 3
Aby upuścić unikalny klucz
ALTER TABLE table_name
DROP INDEX index_name;
Aby upuścić klucz podstawowy
ALTER TABLE table_name
DROP INDEX `PRIMARY`;