PostgreSQL : ma requête est lente, comment lire EXPLAIN ANALYZE ?
posée 5 months ago94 vuesfr
Une requête sur orders (5 millions de lignes) prend 8 secondes. On m'a dit d'utiliser EXPLAIN ANALYZE mais la sortie est illisible pour moi.
Diagnostic IA
Généré par IA. Ce n'est pas une réponse — la communauté ci-dessous le confirme ou le corrige. Vérifiez toujours avant de vous y fier.
1 réponse
Lance :
EXPLAIN (ANALYZE, BUFFERS) SELECT ... ;
Puis cherche, de l'intérieur vers l'extérieur :
1. Seq Scan on orders avec un filtre qui élimine presque toutes les lignes (Rows Removed by Filter: 4999000) : il manque un index sur la colonne filtrée. 2. Écart entre rows= estimé et actual rows= (x100 ou plus) : statistiques obsolètes. Lance ANALYZE orders;. 3. Le nœud avec le plus grand actual time : c'est là que part le temps. 4. Sort Method: external merge Disk : le tri déborde sur disque. Augmente work_mem pour cette requête, ou ajoute un index qui fournit déjà l'ordre.
Pour un WHERE customer_id = $1 ORDER BY created_at DESC LIMIT 20, l'index idéal est composite :
CREATE INDEX CONCURRENTLY orders_customer_created_idx
ON orders (customer_id, created_at DESC);
Colle ton plan sur explain.dalibo.com : il affiche le plan sous forme visuelle.
Connectez-vous pour dire si ça a marché.
Sign in and verify your email to post an answer.