/ / MYSQL Jak bezpiecznie usunąć UNIQUE KEY? O czym pamiętać? - mysql, unikalne ograniczenie, unikalny klucz

MYSQL Jak bezpiecznie usunąć UNIQUE KEY? Co masz na myśli? - mysql, unique-constraint, unique-key

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 № 1

To naprawdę zależy od tego, jak klucz jest używany, oprócz wymuszania unikalności danych.

  1. 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)

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