PostgreSQL : ma requête est lente, comment lire EXPLAIN ANALYZE ?
poze 5 months ago88 gadefr
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.
Dyagnostik IA
Se IA ki fè l. Se pa yon repons — kominote a anba a konfime oswa korije l. Toujou verifye anvan ou fye l.
1 Repons
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.
Konekte pou di lòt moun si li te mache.
Sign in and verify your email to post an answer.