Förstå EXPLAIN-instruktionen
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:
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.