Förstå EXPLAIN-instruktionen

Slutförd

Använd EXPLAIN-instruktionen för att visa körningsplanen för frågan. EXPLAIN kan användas med valfri SELECT-, INSERT-, UPDATE-, DELETE-, VALUES-, EXECUTE-, DECLARE- eller CREATE TABLE AS-instruktion.

EXPLAIN visar körningsplanen för frågan så att du kan förstå hur PostgreSQL: kör en instruktion, om index används, hur tabeller kopplas och den teoretiska kostnaden för en fråga.

Syntaxen för EXPLAIN är:

EXPLAIN [ (parameter [, ...] ) ] statement

Valfria parametrar är:

  • ANALYSERA
  • VERBOSE
  • KOSTNADER
  • BUFFERTAR
  • FORMAT

Till exempel:

EXPLAIN ANALYZE SELECT * FROM category ORDER BY cat_id;

Den här enkla frågan returnerar följande information:

Skärmbild som visar frågeplanen.

ANALYSERA

Det här alternativet kör -instruktionen och returnerar frågeplanen. Utdata från -instruktionen ignoreras, men -instruktionen körs fortfarande. Du kan kombinera ROLLBACK- och EXPLAIN ANALYZE-uttrycken för att förhindra att ändringarna tillämpas med en fråga som gör ändringar i databasen, till exempel INSERT, UPDATE eller DELETE. Till exempel:

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

Visar ytterligare information, inklusive:

  • utdatakolumnlistan för varje nod i planträdet
  • schemakvalificerade tabell- och funktionsnamn
  • variablernas namn i uttryck tillsammans med tabellaliaset
  • namnet på varje utlösare som statistik visas för

KOSTNADER

Innehåller den uppskattade startkostnaden och den totala kostnaden, plus det uppskattade antalet rader och den uppskattade bredden på varje rad.

BUFFERTAR

Buffertar kan endast användas med alternativet ANALYSERA. PostgreSQL använder en LRU-cache (Least Recently Used) för att lagra data som används ofta i minnet. Buffertar visar hur mycket av data som kommer från en cache och hur mycket som hämtas från disken. Visar antalet delade, lokala och temporära block träffar, läsningar och skrivningar. Data som tillhandahålls av BUFFERS kan hjälpa dig att förstå I/O-intensiva delar av en fråga.

FORMAT

Definierar utdataformatet. XML, JSON eller YAML innehåller samma information som TEXT, men i ett format som är enklare för program att använda. TEXT är standard.