Suppression des doublons avec un index unique
Dans le but d'éviter l'insertion de données en double, un index normal a été créé par erreur pour les champs A, B, C et D, ce qui entraîne la présence d'enregistrements en double dans une table de 20 millions d'enregistrements. La question se pose : l'ajout d'un index unique pour ces champs supprimera-t-il les doublons sans compromettre ceux existants ?
Correction de l'index et gestion des doublons
Ajout d'un index unique avec le L'instruction ALTER TABLE sans le modificateur IGNORE échouera car des enregistrements uniques existent déjà. Cependant, l'utilisation du modificateur IGNORE supprimera les doublons.
Approche alternative pour les versions MySQL 5.7.4 et supérieures
Pour les versions MySQL 5.7.4 et supérieures, où le Le modificateur IGNORE n'est pas pris en charge, une approche différente est recommandée :
Syntaxe de suppression des doublons avec INSERT IGNORE
CREATE TABLE tmp_data SELECT * FROM mytable;
TRUNCATE TABLE mytable;
ALTER TABLE mytable ADD UNIQUE INDEX myindex (A, B, C, D);
INSERT IGNORE INTO mytable SELECT * FROM tmp_data;
DROP TABLE tmp_data;
Considérations supplémentaires
La documentation ne précise pas quelle ligne en double sera conservée après l'utilisation du modificateur IGNORE. Il est conseillé de tester cela sur un ensemble de données plus petit avant d'appliquer la solution à une grande table.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3