J'ai une grande (>Mil lignes) de base de données MySQL foiré par des doublons. Je pense qu'il pourrait être de 1/4 à 1/2 de l'ensemble de la db remplie avec eux.
J'ai besoin de se débarrasser d'eux rapidement (je veux dire l'exécution de la requête du temps).
Voici à quoi il ressemble:
id (index) | texte1 | texte2 | texte3
texte1 et texte2 combinaison doit être unique,
s'il y a des doublons, une seule combinaison avec texte3 PAS NULL doit rester. Exemple:
1 | abc | def | NULL
2 | abc | def | ghi
3 | abc | def | jkl
4 | aaa | bbb | NULL
5 | aaa | bbb | NULL
...devient:
1 | abc | def | ghi #(doesn't realy matter id:2 or id:3 survives)
2 | aaa | bbb | NULL #(if there's no NOT NULL text3, NULL will do)
Les nouveaux identifiants froid être n'importe quoi, ils ne dépendent pas de la vieille id de table.
J'ai essayé des choses comme:
CREATE TABLE tmp SELECT text1, text2, text3
FROM my_tbl;
GROUP BY text1, text2;
DROP TABLE my_tbl;
ALTER TABLE tmp RENAME TO my_tbl;
Ou SELECT DISTINCT et d'autres variations.
Pendant qu'ils travaillent sur de petites bases de données, l'exécution de requêtes temps sur la mienne est juste énorme (jamais eu à la fin, en fait; > 20 min)
Est-il un moyen plus rapide de faire cela? Merci de m'aider à résoudre ce problème.