Como otimizar um sql doublon verificador
-
22-07-2019 - |
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());
}
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