2009-09-18 8 views
0

Je voudrais optimiser mon vérificateur Doublon si quelqu'un sait comment cela pourrait être plus rapide.Comment optimiser un vérificateur de doublon sql

$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()); 
     } 

Répondre

2

Je le font habituellement de la façon suivante:

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

Cette requête utiliserait un index sur (EMAIL) ou sur (EMAIL, EMAIL_ID). Cependant, vous ne devriez pas avoir à exécuter cette requête plus d'une fois, donc ses performances ne devraient pas trop vous inquiéter. Une fois que vous avez supprimé vos "Doublons" il suffit de remplacer l'index sur (EMAIL) par un UNIQUE KEY sur (EMAIL) et vous n'aurez plus jamais d'e-mails en double.