Efficiënt query's uitvoeren over partities
Schrijf query's die profiteren van partition pruning en controleer pruning met EXPLAIN.
Efficiënt query's uitvoeren over partities is een gratis SQL Academy-les op CoddyKit. Dit is les 4 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.
Filteren op de partitiesleutel
Pruning werkt alleen wanneer de WHERE-clausule de partitiesleutel bevat:
-- Prunes (uses date partitioning):
SELECT * FROM events WHERE ts >= '2024-03-01' AND ts < '2024-04-01';
-- No pruning — scans all partitions:
SELECT * FROM events WHERE user_id = 42;Samengestelde pruning
De planner kan op meerdere sleutels prunen in tabellen met partitionering op meerdere niveaus:
SELECT * FROM events
WHERE ts >= '2024-03-01' AND ts < '2024-04-01'
AND user_id = 42;
-- Prunes by date AND by hash partition.EXPLAIN toont pruning
Controleer het plan om te bevestigen dat pruning plaatsvindt:
EXPLAIN SELECT * FROM events WHERE ts >= '2024-03-01' AND ts < '2024-04-01';
-- Append
-- -> Seq Scan on events_2024_q1
-- Only Q1 partition shown; others pruned.Uitsluiting op basis van beperkingen versus partitiepruning
Moderne PG gebruikt standaard snelle "partitiepruning". De oudere "uitsluiting op basis van beperkingen" was trager; controleer of enable_partition_pruning = on is ingesteld.
Pruning tijdens uitvoering
Zelfs bij query's met parameters (PREPARE) kan PG tijdens de uitvoering prunen:
PREPARE p(timestamptz, timestamptz) AS
SELECT * FROM events WHERE ts >= $1 AND ts < $2;
EXECUTE p('2024-03-01', '2024-04-01');
-- Pruning happens at execute, not at parse.Indexen over partities heen
Indexen worden doorgegeven aan partities. Een query op de geïndexeerde kolom werkt over alle partities heen — maar de planner scant de index van elke partitie.
Aggregaties over partities heen
Een GROUP BY op de partitiesleutel levert het meeste voordeel op. Een GROUP BY op andere kolommen scant elke partitie.
Parallelle uitvoering per partitie
PostgreSQL kan scans over partities parallel uitvoeren (PG 11 en hoger):
SET max_parallel_workers_per_gather = 4;
EXPLAIN SELECT COUNT(*) FROM events;
-- Parallel Append over partitions.Joins over gepartitioneerde tabellen heen
Als beide gepartitioneerde tabellen dezelfde partitiesleutel gebruiken, is een "partitiegewijze koppeling" sneller — elke partitie wordt afzonderlijk gekoppeld:
SET enable_partitionwise_join = on;
-- Now PG can join events to event_metrics partition-by-partition.Veelvoorkomende fouten voorkomen
- Pas geen functies toe op de partitiesleutel in WHERE — daarmee schakel je pruning uit
- Vergeet de partitiesleutel niet in je query's
- Maak geen duizenden kleine partities — de planningskosten gaan dan overheersen
Verstandige aantallen partities
Richt je op enkele tientallen tot hooguit enkele honderden partities, niet op duizenden. Elke partitie brengt planningskosten met zich mee. Gebruik voor zeer fijnmazige behoeften subpartitionering.
Onderhoud per partitie
VACUUM, ANALYZE en REINDEX worden per partitie uitgevoerd — en kunnen parallel worden uitgevoerd. Hoe meer partities je hebt, hoe groter de winst wordt, zolang je het redelijk houdt.
Samenvatting
Partitionering beloont query's die op de partitiesleutel filteren.
- WHERE op de partitiesleutel → pruning
- Bevestig dit met EXPLAIN
- Schakel een partitiegewijze koppeling in voor overeenkomende koppelingen
- Gebruik niet te veel partities
Korte controle
Je hebt events, gepartitioneerd per maand op ts. Welke query profiteert van partitiepruning?
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 “Efficiënt query's uitvoeren over partities” gratis?
Ja — de volledige tekst van “Efficiënt query's uitvoeren over partities” 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 “Efficiënt query's uitvoeren over partities”?
Schrijf query's die profiteren van partition pruning en controleer pruning met EXPLAIN. 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 4 van 4.
Hoe lang duurt de les “Efficiënt query's uitvoeren over partities”?
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
- Waarom partitioneren: pruning en onderhoud
- Bereik-, lijst- en hashpartitionering
- Partities loskoppelen en koppelen
- Efficiënt query's uitvoeren over partities