Uitleg over de EXPLAIN-opdracht

Voltooid

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:

Schermopname van het queryplan.

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.