EXPLAIN en EXPLAIN ANALYZE lezen
Lees de planboom, begrijp het verschil tussen geschatte kosten en werkelijke tijd en herken de zware knooppunten.
EXPLAIN en EXPLAIN ANALYZE lezen is een gratis SQL Academy-les op CoddyKit. Dit is les 1 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject SQL Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus SQL Academy bevat in totaal 4 lessen.
Waarom EXPLAIN?
EXPLAIN toont de strategie van de queryplanner om een query uit te voeren, zonder de query uit te voeren. EXPLAIN ANALYZE voert de query WEL uit en toont ook de werkelijke tijden.
Basisgebruik van EXPLAIN
Toon het geschatte plan:
EXPLAIN SELECT * FROM orders WHERE user_id = 42;
-- QUERY PLAN
-- ---------------------------------------------------------------
-- Index Scan using orders_user_id_idx on orders
-- (cost=0.43..8.45 rows=5 width=120)
-- Index Cond: (user_id = 42)EXPLAIN ANALYZE
Voert de query uit en voegt werkelijke tijden en aantallen rijen toe:
EXPLAIN ANALYZE SELECT * FROM orders WHERE user_id = 42;
-- Index Scan using orders_user_id_idx on orders
-- (cost=0.43..8.45 rows=5 width=120)
-- (actual time=0.041..0.043 rows=4 loops=1)
-- Planning Time: 0.082 ms
-- Execution Time: 0.057 msDe boomstructuur lezen
Plannen zijn bomen. Inspringing = onderliggende node. Onderliggende nodes worden vóór hun bovenliggende nodes uitgevoerd.
Aggregate
-> Hash Join
Hash Cond: (o.user_id = u.id)
-> Seq Scan on orders
-> Hash
-> Seq Scan on usersKosten versus tijd
De kolom cost bevat TWEE getallen: startup_cost..total_cost. Dit zijn willekeurige eenheden van de queryplanner, geen seconden. Gebruik actual time voor echte waarden.
rows = geschat; actual rows = werkelijk
rows is de schatting van de queryplanner. actual rows is wat er werkelijk gebeurde. Als ze sterk verschillen, kloppen de statistieken niet.
Lussen vermenigvuldigen de tijd
Bij geneste lussen betekent actual time=X loops=N dat elke iteratie X duurde; per knooppunt is het totaal X×N.
Nested Loop (actual time=0.05..2.03 rows=500)
-> Seq Scan on orders (actual ... loops=1)
-> Index Scan using users_pkey (actual time=0.01..0.01 loops=500)BUFFERS toont je I/O
EXPLAIN (ANALYZE, BUFFERS) rapporteert bufferhits en -lezingen — de I/O achter de tijdmetingen:
EXPLAIN (ANALYZE, BUFFERS) SELECT ...;
-- Buffers: shared hit=12 read=4Opties voor FORMAT
Gebruik JSON of YAML voor programmatische verwerking:
EXPLAIN (ANALYZE, FORMAT JSON) SELECT ...;Gebruik EXPLAIN ANALYZE niet voor destructieve instructies
EXPLAIN ANALYZE voert een UPDATE/DELETE/INSERT daadwerkelijk uit. Plaats dit in een transactie met ROLLBACK als je het wilt inspecteren zonder de wijzigingen vast te leggen:
BEGIN;
EXPLAIN ANALYZE DELETE FROM orders WHERE ...;
ROLLBACK;Veelvoorkomende planknooppunten
- Seq Scan — leest de hele tabel
- Index Scan — gebruikt een index
- Bitmap Heap Scan — combineert meerdere indexen
- Hash Join / Merge Join / Nested Loop — koppelstrategieën
- Sort, Aggregate, Limit, Materialize
Werkstroom voor het lezen van plannen
- Voer EXPLAIN ANALYZE uit op de trage query
- Zoek het knooppunt met de hoogste
actual time - Vergelijk het geschatte aantal
rowsmetactual rows - Controleer of indexen worden gebruikt
- Herhaal: voeg een index toe / herschrijf de query / voer ANALYZE uit
Samenvatting
EXPLAIN ANALYZE is je belangrijkste hulpmiddel voor prestaties.
- De kosten zijn relatief, de tijd is echt
- Geschatte tegenover werkelijke rijen onthult problemen met statistieken
- BUFFERS toont I/O
- Plaats destructieve queries tussen BEGIN en ... ROLLBACK
Korte controle
Wat is het verschil tussen EXPLAIN en EXPLAIN ANALYZE?
Leer SQL met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 46
- Lessen
- 183
Veelgestelde vragen
Is de les “EXPLAIN en EXPLAIN ANALYZE lezen” gratis?
Ja — de volledige tekst van “EXPLAIN en EXPLAIN ANALYZE lezen” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus SQL Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus SQL Academy bevat in totaal 4 lessen.
Wat leer ik in “EXPLAIN en EXPLAIN ANALYZE lezen”?
Lees de planboom, begrijp het verschil tussen geschatte kosten en werkelijke tijd en herken de zware knooppunten. Je oefent met SQL Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met SQL Academy te beginnen?
Ervaring vooraf is niet nodig. SQL Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.
Hoe lang duurt de les “EXPLAIN en EXPLAIN ANALYZE lezen”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over SQL Academy?
Ja. Elke les over SQL Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- EXPLAIN en EXPLAIN ANALYZE lezen
- Sequentiële scans versus indexscans
- Hash-join versus merge-join versus geneste lus
- Trage query's herkennen en oplossen