Uitleg over de UITLEG-instructie

Voltooid

Gebruik de INSTRUCTIE EXPLAIN om het uitvoeringsplan voor de query weer te geven. UITLEG kan worden gebruikt met elke INSTRUCTIE 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
  • VERBOSE
  • KOSTEN
  • BUFFERS
  • FORMAAT

Voorbeeld:

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 wordt het queryplan geretourneerd. 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. Voorbeeld:

BEGIN;

> EXPLAIN ANALYZE INSERT INTO Animal 
> (ani_id, name, weight_kg, cat_id, enc_id) 
> VALUES (28, 'Robin Robin', 0.5, 1, 2);

ROLLBACK;

VERBOSE

Geeft aanvullende informatie weer, waaronder:

  • de lijst met uitvoerkolommen voor elk knooppunt in de planstructuur
  • de schema-gekwalificeerde tabel- en functienamen
  • de namen van variabelen in expressies samen met de tabelalias
  • 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 gedeelde, lokale en tijdelijke blokken weer, treffers, lees- en schrijfbewerkingen. 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.