Uitleg over de EXPLAIN-opdracht
Gebruik de verklaring EXPLAIN om het uitvoeringsplan voor de query weer te geven. EXPLAIN kan worden gebruikt met elke SELECT, INSERT, UPDATE, DELETE, VALUES, EXECUTE, DECLARE of CREATE TABLE AS.
EXPLAIN geeft het uitvoeringsplan voor de query weer, zodat u begrijpt hoe PostgreSQL een instructie uitvoert, of er indexen worden gebruikt, hoe tabellen worden samengevoegd en wat de kosten van een query zijn.
De syntaxis voor EXPLAIN is:
EXPLAIN [ (parameter [, ...] ) ] statement
De optionele parameters zijn:
- ANALYSEREN
- LANGDRADIG
- KOSTEN
- Buffers
- FORMAAT
Bijvoorbeeld:
EXPLAIN ANALYZE SELECT * FROM category ORDER BY cat_id;
Deze eenvoudige query retourneert de volgende informatie:
ANALYSEREN
Met deze optie wordt de instructie uitgevoerd en het queryplan teruggestuurd. De uitvoer van de instructie wordt verwijderd, maar de instructie wordt nog steeds uitgevoerd. U kunt de instructies ROLLBACK en EXPLAIN ANALYZE combineren om te voorkomen dat de wijzigingen worden toegepast met een query die wijzigingen aanbrengt in de database, zoals INSERT, UPDATE of DELETE. Bijvoorbeeld:
BEGIN;
> EXPLAIN ANALYZE INSERT INTO Animal
> (ani_id, name, weight_kg, cat_id, enc_id)
> VALUES (28, 'Robin Robin', 0.5, 1, 2);
ROLLBACK;
LANGDRADIG
Geeft aanvullende informatie weer, waaronder:
- de lijst met uitvoerkolommen voor elk knooppunt in de planstructuur
- de schema-gekwalificeerde tabel- en functienamen
- de variabelennamen in expressies samen met de alias van de tabel
- de naam van elke trigger waarvoor statistieken worden weergegeven
KOSTEN
Omvat de geschatte opstartkosten en de totale kosten, plus het geschatte aantal rijen en de geschatte breedte van elke rij.
Buffers
Buffers kunnen alleen worden gebruikt met de optie ANALYSEREN. PostgreSQL maakt gebruik van een LRU-cache (Least Recently Used) om veelgebruikte gegevens in het geheugen op te slaan. Buffers geven weer hoeveel van de gegevens afkomstig zijn uit een cache en hoeveel er van de schijf wordt opgehaald. Geeft het aantal treffers, lees- en schrijfbewerkingen weer voor gedeelde, lokale en tijdelijke blokken. De gegevens die door BUFFERS worden verstrekt, kunnen helpen om inzicht te krijgen in I/O-intensieve delen van een query.
FORMAAT
Hiermee definieert u de uitvoerindeling. XML, JSON of YAML bevatten dezelfde informatie als TEKST, maar in een indeling die gemakkelijker te gebruiken is voor programma's. TEKST is de standaardwaarde.