EXPLAIN / EXPLAIN ANALYZE

PostgreSQL 🟡 Mid

Définition

EXPLAIN montre le plan d'exécution prévu d'une requête. EXPLAIN ANALYZE exécuté réellement la requête et montre les temps réels. Essentiel pour l'optimisation.

Analogie

EXPLAIN = le GPS qui te montre l'itinéraire prévu. EXPLAIN ANALYZE = le GPS avec le temps réel du trajet.

Exemple de code

EXPLAIN ANALYZE
SELECT u.name, COUNT(o.id)
FROM users u
JOIN orders o ON u.id = o.user_id
GROUP BY u.name;

Cas d'usage

Diagnostiquer les requêtes lentes, vérifier l'utilisation des index et optimiser les jointures.

Anti-pattern

Utiliser EXPLAIN ANALYZE sur une requête DELETE ou UPDATE sans transaction, les données sont réellement modifiées.
#sgbd#interview#database#postgresql

En entretien

  1. Quelle différence entre EXPLAIN et EXPLAIN ANALYZE ?

    EXPLAIN montre le plan d'exécution prévu sans exécuter la requête, comme un GPS qui affiche l'itinéraire prévu. EXPLAIN ANALYZE exécute réellement la requête et montre les temps réels, comme le GPS avec le temps de trajet effectif.

  2. Comment tu debuggerais une requête lente avec jointure ?

    Je lancerais un EXPLAIN ANALYZE dessus pour diagnostiquer les temps réels et vérifier l'utilisation des index sur la jointure. C'est l'usage même de cet outil : diagnostiquer les requêtes lentes et optimiser les jointures.

  3. Pourquoi faut-il faire attention en utilisant EXPLAIN ANALYZE sur un DELETE ou un UPDATE ?

    Parce qu'EXPLAIN ANALYZE exécute réellement la requête, donc un DELETE ou un UPDATE modifie vraiment les données. Il faut l'entourer d'une transaction si on veut annuler l'effet après coup.

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre