Stratégies hautes performances pour supprimer des millions de lignes basées sur l'ID
Supprimer des millions de lignes de base de données peut prendre énormément de temps. Ce guide détaille les méthodes optimales pour supprimer efficacement ces lignes à l'aide de leurs identifiants.
Techniques d'optimisation clés
VACUUM
et ANALYZE
les commandes aident à maintenir les métadonnées de la base de données et à améliorer l'efficacité des requêtes. Les exécuter avant l’opération de suppression peut générer des gains de performances significatifs.Exemples de code
Utiliser une table temporaire :
<code class="language-sql"> -- Create a temporary table to hold rows to keep CREATE TEMP TABLE tmp AS SELECT t.* FROM tbl t LEFT JOIN del_list d USING (id) WHERE d.id IS NULL; -- Remove all rows from the original table TRUNCATE tbl; -- Repopulate the original table with the retained rows INSERT INTO tbl SELECT * FROM tmp;</code>
Suppression directe avec considérations relatives aux clés étrangères :
<code class="language-sql"> DELETE FROM tbl t USING del_list d WHERE t.id = d.id AND NOT EXISTS (SELECT 1 FROM related_table WHERE id = t.id);</code>
Considérations importantes
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!