Mysql добавить многостолбцовый индекс с повторяющимися строками
Имея следующую таблицу:
id -> incremental
field_1 -> foreignkey
field_2 -> foreignkey
Я хочу добавить следующий индекс
ALTER TABLE my_table ADD unique index(field_1, field_2);
Как бы то ни было (из-за плохой проверки приложения) у меня много повторяющихся строк (под повторяющимися я имею в виду одно и то же поле_1 и одно и то же поле_2, имеющее только идентификатор в качестве разницы)
Таблица содержит около 60000 строк, поэтому... удаление поля за полем будет очень трудным.
Как я могу применить этот индекс и удалить каждую дублированную строку?
1 ответ
Решение
create table mytable2 like mytable;
insert into mytable2
select max(id), field_1, field_2
from mytable
group by field_1, field_2;
rename table mytable to mytable_old, mytable2 to mytable;
ALTER TABLE my_table ADD unique index(field_1, field_2)