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
- Lancez EXPLAIN ANALYZE (ajoutez BUFFERS sous PostgreSQL) sur un environnement avec des données réalistes, pas une base vide.
- Collez la requête, le plan complet et la définition des tables et index.
- 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
- Seq Scan on commandes — parcourt ~11,9 M lignes pour ne garder que celles d’un client. Aucun index ne commence par
client_id. - Sort (external merge, Disk: 48MB) — trie par
cree_lesur disque, faute de place danswork_mem. - 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
| Aspect | Impact |
|---|---|
| Disque | Proportionnel à 12 M entrées sur deux colonnes |
| Écritures | Un index de plus à maintenir à chaque INSERT |
| Doublons | Ne 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.