MySQL elimina los duplicados de la gran base de datos rápida
Tengo una gran base de datos MySQL (> Mil rows) desordenada por duplicados. Creo que podría ser de 1/4 a 1/2 de toda la db llena con ellos. Necesito deshacerme de ellos rápidamente (me refiero al tiempo de ejecución de la consulta). Así es como se ve:
ID (índice) | texto1 | texto2 | texto3
La combinación de texto1 y texto2 debe ser única, si hay duplicados, solo debe quedar una combinación con texto3 NO NULO. Ejemplo:
1 | abc | def | NULL
2 | abc | def | ghi
3 | abc | def | jkl
4 | aaa | bbb | NULL
5 | aaa | bbb | NULL
... se convierte en:
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)
Los nuevos identificadores pueden ser cualquier cosa, no dependen de los identificadores de tabla antiguos.
He intentado cosas como:
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;
O SELECCIONAR DISTINTO y otras variaciones.
Mientras trabajan en bases de datos pequeñas, el tiempo de ejecución de consultas en la mía es enorme (en realidad nunca llegó al final;> 20 min)
¿Hay alguna forma más rápida de hacer eso? Por favor ayudame a resolver este problema.