</>
Plan du cours — 26/64

Seq Scan, Index Scan, Bitmap : pourquoi le planificateur choisit

Avancé

Un Seq Scan n'est pas un bug : sur une petite table, ou quand la requête ramène une grande part des lignes, lire séquentiellement est moins cher que sauter dans un index.

NœudQuand il est choisi
Seq ScanTable petite, ou le filtre retient une grande fraction des lignes
Index ScanPeu de lignes recherchées, ou tri fourni par l'index
Index Only ScanToutes les colonnes lues sont dans l'index
Bitmap Index Scan + Bitmap Heap ScanUn nombre moyen de lignes (trop pour un Index Scan, trop peu pour un Seq Scan), ou combinaison de plusieurs index

Les algorithmes de jointure#

  • Nested Loop : pour chaque ligne de l'extérieur, cherche dans l'intérieur ; excellent si l'extérieur est petit et l'intérieur indexé.
  • Hash Join : construit une table de hachage sur le plus petit côté ; bon pour de grands ensembles non triés.
  • Merge Join : fusionne deux entrées triées ; bon si elles le sont déjà (index).

Piège : le réflexe « il fait un Seq Scan, donc il faut un index » est faux. Vérifiez la sélectivité : si la requête renvoie 40 % de la table, aucun index ne rendra la lecture plus rapide.