Tous les termes du glossaire

Parcours d’index

Qu’est-ce qu’un parcours d’index (Index Scan) dans PostgreSQL ?

Un parcours d’index utilise un index pour trouver les lignes correspondantes, puis les récupère dans la table. EXPLAIN l’affiche sous le nom Index Scan ; un Index Only Scan peut se passer de la table.

Lors d’un parcours d’index, PostgreSQL parcourt un index pour trouver les entrées qui correspondent à la condition de la requête, puis lit les lignes correspondantes dans la table. C’est efficace lorsqu’une requête sélectionne une petite fraction des lignes d’une table, par exemple pour une recherche par clé primaire.

Des méthodes d’accès apparentées apparaissent aussi dans EXPLAIN. Un Bitmap Index Scan collecte d’abord l’emplacement de toutes les lignes correspondantes, puis lit les pages de la table dans l’ordre physique, ce qui convient aux résultats de taille moyenne. Un Index Only Scan répond à la requête à partir du seul index lorsque toutes les colonnes nécessaires s’y trouvent, et évite de lire la table pour les pages que la carte de visibilité (visibility map) marque comme entièrement visibles.

Exemple

L’exemple crée une table avec une clé primaire, que PostgreSQL adosse à un index B-tree, et interroge EXPLAIN sur une recherche par id. La sortie affiche Index Scan using orders_pkey.

CREATE TABLE orders (id int PRIMARY KEY, customer_id int, total numeric);
INSERT INTO orders
SELECT g, g % 1000, g * 1.5 FROM generate_series(1, 100000) AS g;
ANALYZE orders;

EXPLAIN SELECT * FROM orders WHERE id = 42;

Du SQL simple pour PostgreSQL 16 ou 17 standard, sans aucune extension. Exécutez-le dans une base de données vide que vous pouvez jeter ensuite.

Références

Documentation officielle de PostgreSQL (en anglais).

Termes associés