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, entraînant 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 pour supprimer les doublons avec INSERT IGNORE
<code class="sql">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;</code>
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.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!