PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Le moyen le plus rapide d'exécuter une requête de suppression dans une grande table dans PostgreSQL

Si cette requête prend du temps :

delete from PlanItems p where p.jobId = :jobid

et vous avez un index sur PlanItmes(jobId) -- où jobId est la première colonne de l'index ; vous devez alors prendre en compte d'autres problèmes.

  1. Existe-t-il des contraintes de clé étrangère en cascade qui utilisent jobId ? Si tel est le cas, les cascades peuvent avoir un impact sur ces tables - et s'il s'agit de suppressions en cascade, la suppression de ces lignes peut affecter davantage de tables.

  2. Y a-t-il un déclencheur de suppression sur la table ? Si tel est le cas, vos suppressions "simples" peuvent faire beaucoup plus de travail que vous ne le pensez.

  3. Y a-t-il une lourde charge sur le système ? Si c'est le cas, le temps peut simplement attendre une opportunité de supprimer les lignes.

  4. Les vues matérialisées sont-elles construites sur la table ? Si tel est le cas, ils sont peut-être en cours d'actualisation.

Si rien de tout cela n'est le cas, cela pourrait être un problème sur la façon dont vous mesurez le temps écoulé.