Diagnostiquer une requête SQL lente à partir de son EXPLAIN ANALYZE

Lisez le plan d’exécution d’une requête SQL lente nœud par nœud, trouvez le goulot d’étranglement et obtenez des index ou réécritures précis, avec leur coût en écriture. Conçu pour ChatGPT, Claude, Gemini et Microsoft Copilot. Il comprend 5 variables personnalisables et vous pouvez le copier gratuitement en un clic.

Avancé · Code · En attente de relecture éditoriale

Prompt

Agis comme un DBA expert en performances de {{moteur}}.

J’ai une requête lente. Voici les éléments :
- Requête :
{{requete}}
- Sortie d’EXPLAIN (idéalement EXPLAIN ANALYZE avec BUFFERS, ou FORMAT=TREE) :
{{plan}}
- Tables, index existants et volumétrie approximative : {{schema}}
- Fréquence d’exécution et temps acceptable : {{contexte}}

Livrables :
1. Une lecture du plan en langage clair, du nœud le plus interne vers l’extérieur : rôle de chaque nœud, lignes estimées et réelles, temps consommé.
2. Le goulot principal et les goulots secondaires, avec l’élément du plan qui le prouve (parcours séquentiel, estimations très faussées, tri sur disque, boucle imbriquée sur beaucoup de lignes, filtre appliqué tard, fonction sur une colonne indexée, etc.).
3. Des corrections classées par impact attendu et effort :
   - Des index avec le `CREATE INDEX` exact (ordre des colonnes justifié, index partiels ou couvrants si utile, création non bloquante quand le moteur le permet).
   - Une réécriture de la requête si elle améliore le plan (par exemple `EXISTS` plutôt que `IN`, pagination par clé, éviter `OR` sur des colonnes différentes).
   - Des statistiques ou réglages (ANALYZE, statistiques étendues, mémoire de travail) uniquement si le plan le justifie.
4. Le coût de chaque index : espace disque, impact sur INSERT/UPDATE et doublon éventuel avec un index existant.
5. La vérification : quoi relancer et quel changement doit apparaître dans le plan.

Contraintes :
- Appuie chaque conclusion sur le plan ; ne promets aucun gain en pourcentage ni en millisecondes.
- Si je n’ai qu’un EXPLAIN sans ANALYZE, ou s’il manque des informations sur le schéma, dis-le et demande-les avant de recommander des index.
- Préviens-moi si une action verrouille des tables en production.

Comment l'utiliser

  1. Lancez EXPLAIN ANALYZE (ajoutez BUFFERS sous PostgreSQL) sur un environnement avec des données réalistes, pas une base vide.
  2. Collez la requête, le plan complet et la définition des tables et index.
  3. Appliquez d’abord la correction la plus efficace en préproduction et comparez le nouveau plan.

Exemple d'utilisation

Moteur : PostgreSQL 16 · Requête : commandes d’un client sur 90 jours triées par date · Table commandes : 12 millions de lignes · Exécutée 300 fois par minute.

Exemple de résultat

1. Lecture du plan

  1. Seq Scan on commandes — parcourt ~11,9 M lignes pour ne garder que celles d’un client. Aucun index ne commence par client_id.
  2. Sort (external merge, Disk: 48MB) — trie par cree_le sur disque, faute de place dans work_mem.
  3. Limit — tout ce travail pour 20 lignes seulement.

2. Goulot d’étranglement

Le parcours séquentiel est le problème principal ; le tri sur disque en découle. Le plan est tronqué (Filter: ...) : confirmez les lignes réelles du filtre avec EXPLAIN (ANALYZE, BUFFERS).

3. Correctif recommandé

-- Colonne d’égalité d’abord, puis colonne de plage/tri :
-- l’index renvoie les lignes déjà triées et le Limit s’arrête à 20
CREATE INDEX CONCURRENTLY idx_commandes_client_cree
    ON commandes (client_id, cree_le DESC);

ANALYZE commandes;

CONCURRENTLY ne bloque pas les écritures, mais prend plus de temps et ne peut pas s’exécuter dans une transaction (attention aux outils de migration qui en ouvrent une par défaut).

4. Coût

AspectImpact
DisqueProportionnel à 12 M entrées sur deux colonnes
ÉcrituresUn index de plus à maintenir à chaque INSERT
DoublonsNe recoupe pas l’index sur statut

5. Vérification

Relancez l’EXPLAIN : vous devez voir Index Scan using idx_commandes_client_cree et le nœud Sort doit disparaître…

Informations clés

Catégorie
Programmation et développement · SQL
Type de résultat
Code
Niveau
Avancé
Conçu pour
ChatGPT, Claude, Gemini et Microsoft Copilot
Vérifié sur
En attente de vérification éditoriale
Variables
Moteur de base de données, Requête SQL, Plan d’exécution, Tables, index et volumétrie et Fréquence et objectif
Langue
Français
Prix
Gratuit, sans inscription
Mis à jour
07/11/2026

Questions fréquentes

Pourquoi EXPLAIN ANALYZE et pas seulement EXPLAIN ?

EXPLAIN ne montre que des estimations. EXPLAIN ANALYZE exécute la requête et affiche les lignes et temps réels ; l’écart entre les deux est l’indice le plus utile. Comme la requête est vraiment exécutée, encadrez les UPDATE ou DELETE dans une transaction annulée.

Ajouter des index accélère-t-il toujours la base ?

Non. Chaque index occupe de l’espace et ralentit les écritures. C’est pourquoi le prompt demande le coût de chacun et vérifie les doublons.

À quoi sert ce prompt ?

Lisez le plan d’exécution d’une requête SQL lente nœud par nœud, trouvez le goulot d’étranglement et obtenez des index ou réécritures précis, avec leur coût en écriture.

Avec quels outils d'IA fonctionne-t-il ?

Il est conçu pour ChatGPT, Claude, Gemini et Microsoft Copilot. Nous ne l'avons pas encore vérifié sur ces outils ; les résultats peuvent donc varier de l'un à l'autre.

Comment personnaliser le prompt ?

Cliquez sur « Personnaliser » et remplissez les variables (Moteur de base de données, Requête SQL, Plan d’exécution, Tables, index et volumétrie et Fréquence et objectif). Le texte se met à jour instantanément et vous pouvez ensuite le copier en un clic. Les valeurs sont stockées uniquement dans votre navigateur.

Faut-il de l'expérience pour l'utiliser ?

Il est de niveau avancé : il s'adresse aux personnes expérimentées dans le domaine, capables d'évaluer et d'ajuster le résultat.

Ce prompt est-il gratuit ?

Oui. Tous les prompts de HomeCasa Prompts sont gratuits, sans inscription ni abonnement. Vous pouvez aussi les utiliser dans des projets professionnels.

Puis-je me fier au résultat de l'IA ?

Considérez-le comme un brouillon de qualité : vérifiez toujours les données, les chiffres et les affirmations importantes avant de publier ou de prendre des décisions.

Prompts similaires