Comment optimiser un vérificateur sql doublon
-
22-07-2019 - |
Question
Je voudrais optimiser mon vérificateur Doublon si quelqu'un sait comment il pourrait être plus rapide.
$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());
}
La solution
Je le fais habituellement de la manière suivante:
Delete from Email where ID not in
(
Select Min(em.ID) minID
from eMail em group by em.Email
)
Autres conseils
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, ses performances ne devraient donc pas trop vous inquiéter. Une fois que vous avez supprimé votre " Doublons " il suffit de remplacer l'index sur (EMAIL)
par une CLE UNIQUE
sur (EMAIL)
et vous n'aurez plus jamais de doublons d'e-mails.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow