Pergunta

Eu gostaria de otimizar meu verificador doublon se alguém sabe como isso poderia ser mais rápido.

$doublonchecker="delete bad_rows.* from eMail as good_rows inner join eMail as bad_rows on bad_rows.EMAIL = good_rows.EMAIL and bad_rows.EMAIL_ID > good_rows.EMAIL_ID";
$resultdoublon = mysql_query($doublonchecker);
        if (!$resultdoublon) {
        die('Error : ' . mysql_error());
        }
Foi útil?

Solução

Eu costumo fazê-lo da seguinte maneira:

Delete from Email where ID not in 
(
Select Min(em.ID) minID
from eMail em  group by em.Email
)

Outras dicas

Essa consulta seria usar um índice em (EMAIL) ou em (EMAIL, EMAIL_ID). No entanto, você não deve ter para executar essa consulta mais de uma vez, portanto, seu desempenho não deve se preocupar muito de você. Depois de ter removido o seu "Doublons" basta substituir o índice em (EMAIL) com um UNIQUE KEY em (EMAIL) e você nunca vai ter e-mails duplicados nunca mais.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top