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.

Respuestas a la pregunta(9)

Su respuesta a la pregunta