Maison > base de données > tutoriel mysql > Comment supprimer efficacement les lignes en double d'une grande table SQL ?

Comment supprimer efficacement les lignes en double d'une grande table SQL ?

Linda Hamilton
Libérer: 2025-01-14 06:50:42
original
622 Les gens l'ont consulté

How to Efficiently Remove Duplicate Rows from a Large SQL Table?

Suppression efficace des lignes en double des grandes tables SQL

L'ajout d'une contrainte unique à une grande table (des millions de lignes) nécessite une gestion minutieuse des entrées en double. La suppression directe des doublons avec une requête SQL standard peut être extrêmement lente et gourmande en ressources.

Une méthode simple consiste à sauvegarder la table, à ajouter la contrainte unique, puis à restaurer la table à partir de la sauvegarde. Cela garantit que seules les lignes uniques sont conservées.

Cependant, une approche plus raffinée optimise le processus de suppression à l'aide d'une requête SQL concise :

<code class="language-sql">DELETE FROM table
USING table AS alias
WHERE table.field1 = alias.field1 AND table.field2 = alias.field2 AND
table.max_field < alias.max_field;</code>
Copier après la connexion

Cette requête supprime efficacement les doublons en comparant les lignes basées sur field1 et field2. Il conserve la ligne avec la valeur max_field la plus élevée, éliminant ainsi les doublons de valeur inférieure. Par exemple :

<code class="language-sql">DELETE FROM user_accounts
USING user_accounts AS ua2
WHERE user_accounts.email = ua2.email AND user_accounts.id < ua2.id;</code>
Copier après la connexion

Cet exemple supprime les adresses e-mail en double, en préservant le compte avec le id le plus élevé (vraisemblablement le plus récemment créé).

Remarque importante : La clause USING, qui améliore considérablement l'efficacité des requêtes en permettant la comparaison directe des lignes, est une fonctionnalité spécifique à PostgreSQL. Des méthodes alternatives peuvent être nécessaires pour d'autres systèmes de bases de données.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal