Comprendre l’instruction EXPLAIN

Effectué

Utilisez l’instruction EXPLAIN pour afficher le plan d’exécution de la requête. EXPLAIN peut être utilisé avec n’importe quelle instruction SELECT, INSERT, UPDATE, DELETE, VALUES, EXECUTE, DECLARE ou CREATE TABLE AS.

EXPLAIN affiche le plan d’exécution de la requête, ce qui vous permet de comprendre comment PostgreSQL : exécute une instruction, si les index sont utilisés, comment les tables sont jointes et le coût théorique d’une requête.

La syntaxe d’EXPLAIN est la suivante :

EXPLAIN [ (parameter [, ...] ) ] statement

Les paramètres facultatifs sont les suivants :

  • ANALYSER
  • VERBEUX
  • COÛTS
  • Tampons
  • FORMAT

Par exemple:

EXPLAIN ANALYZE SELECT * FROM category ORDER BY cat_id;

Cette requête simple retourne les informations suivantes :

Capture d’écran montrant le plan de requête.

ANALYSER

Cette option exécute l’instruction et retourne le plan de requête. La sortie de l’instruction est ignorée, mais l’instruction est toujours exécutée. Vous pouvez combiner les instructions ROLLBACK et EXPLAIN ANALYZE pour empêcher l’application des modifications avec une requête qui apporte des modifications à la base de données, telles que INSERT, UPDATE ou DELETE. Par exemple:

BEGIN;

> EXPLAIN ANALYZE INSERT INTO Animal 
> (ani_id, name, weight_kg, cat_id, enc_id) 
> VALUES (28, 'Robin Robin', 0.5, 1, 2);

ROLLBACK;

VERBEUX

Affiche des informations supplémentaires, notamment :

  • liste des colonnes de sortie pour chaque nœud dans l’arborescence du plan
  • les noms de table et de fonction qualifiés par le schéma
  • les noms des variables dans les expressions, ainsi que l'alias de la table
  • nom de chaque déclencheur pour lequel les statistiques sont affichées

DÉPENSES

Inclut le coût de démarrage estimé et le coût total, ainsi que le nombre estimé de lignes et la largeur estimée de chaque ligne.

TAMPONS

Les mémoires tampons ne peuvent être utilisées qu’avec l’option ANALYZE. PostgreSQL utilise un cache le moins récemment utilisé (LRU) pour stocker les données fréquemment utilisées en mémoire. Les mémoires tampons affichent la quantité de données provenant d’un cache et la quantité extraite du disque. Affiche le nombre de hits, lectures et écritures sur les blocs partagés, locaux et temporaires. Les données fournies par BUFFERS peuvent permettre de mieux comprendre les parties intensives en E/S d’une requête.

FORMAT

Définit le format de sortie. XML, JSON ou YAML contiennent les mêmes informations que TEXT, mais dans un format plus facile à utiliser pour les programmes. TEXT est la valeur par défaut.