Aller au contenu
Transactions, index & performance

EXPLAIN QUERY PLAN

EXPLAIN QUERY PLAN montre comment SQLite compte exécuter une requête : parcours complet de table (SCAN) ou recherche par index (SEARCH). C'est le premier réflexe face à une requête lente.

  • plan d'exécution
  • EXPLAIN
  • SCAN
  • SEARCH
  • performance
  • optimisation

Syntaxe

Modèle
EXPLAIN QUERY PLANSELECT ...;

Exemple

Exemple concret
CREATE INDEX idx_orders_customer ON orders (customer_id);EXPLAIN QUERY PLANSELECT * FROM orders WHERE customer_id = 1;-- Jeu de données : boutique-- Sans l'index, le plan serait : SCAN orders (lecture de toute la table).-- Seule la colonne detail est à lire, les trois premières sont des numéros internes.-- Résultat attendu (id | parent | notused | detail) :-- 3 | 0 | 61 | SEARCH orders USING INDEX idx_orders_customer (customer_id=?)

À retenir

  1. Lecture du plan : SCAN parcourt toute la table, SEARCH … USING INDEX cible des lignes, USING COVERING INDEX lit tout depuis l'index sans toucher la table, USE TEMP B-TREE FOR ORDER BY signale un tri supplémentaire.
  2. Piège : sur une très petite table, le moteur peut préférer un SCAN même si un index existe, et il a raison. Testez sur un volume réaliste avant de conclure.
  3. Exécutez ANALYZE après un chargement massif : les statistiques collectées aident l'optimiseur à choisir le bon index.
  4. EXPLAIN seul, sans QUERY PLAN, affiche le bytecode interne de SQLite, rarement utile. Dans PostgreSQL, EXPLAIN ANALYZE exécute réellement la requête et donne les temps mesurés : attention sur un UPDATE ou un DELETE.

Voir aussi