MySQL быстро удаляет дубликаты из большой базы данных

у нас большой (>Mil строк) База данных MySQL испорчена дубликатами. Я думаю, что это может быть от 1/4 до 1/2 всего дБ, заполненного ими. Мне нужно быстро избавиться от них (я имею в виду время выполнения запроса). Вот'Как это выглядит:

id (индекс) | текст1 | текст2 | text3

text1 & Комбинация text2 должна быть уникальной, при наличии дубликатов должна остаться только одна комбинация с text3 NOT NULL. Пример:

1 | abc | def | NULL  
2 | abc | def | ghi  
3 | abc | def | jkl  
4 | aaa | bbb | NULL  
5 | aaa | bbb | NULL  

... становится:

1 | abc | def | ghi   #(doesn't realy matter id:2 or id:3 survives)   
2 | aaa | bbb | NULL  #(if there's no NOT NULL text3, NULL will do)

Новые идентификаторы должны быть чем угодно, они не зависят от старых идентификаторов таблиц.

мы пробовали такие вещи, как:

CREATE TABLE tmp SELECT text1, text2, text3
FROM my_tbl;
GROUP BY text1, text2;
DROP TABLE my_tbl;
ALTER TABLE tmp RENAME TO my_tbl;

Или ВЫБЕРИТЕ DISTINCT и другие варианты.

Хотя они работают с небольшими базами данных, время выполнения запросов у меня просто огромное (на самом деле никогда не доходило до конца;> 20 мин)

Есть ли более быстрый способ сделать это? Пожалуйста, помогите мне решить эту проблему.

Ответы на вопрос(9)

Ваш ответ на вопрос