Vysvětlení příkazu EXPLAIN

Dokončeno

Pomocí příkazu EXPLAIN zobrazte plán provádění dotazu. FUNKCI EXPLAIN lze použít s libovolným příkazem SELECT, INSERT, UPDATE, DELETE, VALUES, EXECUTE, DECLARE nebo CREATE TABLE AS.

FUNKCE EXPLAIN zobrazí plán provádění dotazu, který vám umožní pochopit, jak PostgreSQL: provede příkaz, jestli se používají indexy, jak se tabulky spojují, a pomyslné náklady na dotaz.

Syntaxe funkce EXPLAIN je:

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

Volitelné parametry jsou:

  • ANALYZOVAT
  • ROZVLEKLÝ
  • NÁKLADY
  • BUFFERY
  • FORMÁT

Například:

EXPLAIN ANALYZE SELECT * FROM category ORDER BY cat_id;

Tento jednoduchý dotaz vrátí následující informace:

Snímek obrazovky zobrazující plán dotazu

ANALYZOVAT

Tato možnost spustí příkaz a vrátí plán dotazu. Výstup příkazu se zahodí, ale příkaz se přesto spustí. Příkazy ROLLBACK a EXPLAIN ANALYZE můžete zkombinovat, abyste zabránili použití změn pomocí dotazu, který provede změny v databázi, například INSERT, UPDATE nebo DELETE. Například:

BEGIN;

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

ROLLBACK;

ROZVLEKLÝ

Zobrazí další informace, mezi které patří:

  • seznam výstupních sloupců pro každý uzel ve stromu plánu
  • názvy tabulek a funkcí kvalifikovaných podle schématu
  • názvy proměnných ve výrazech spolu s aliasem tabulky
  • název každého triggeru, pro který se zobrazují statistiky

NÁKLADY

Zahrnuje odhadované počáteční náklady a celkové náklady a odhadovaný počet řádků a odhadovanou šířku každého řádku.

BUFFERY

Vyrovnávací paměti lze použít pouze s možností ANALYZE. PostgreSQL používá mezipaměť LRU (Least Recently Used) k ukládání často používaných dat do paměti. Vyrovnávací paměti zobrazují, kolik dat pochází z mezipaměti a kolik je získáno z disku. Zobrazí počet přístupů ke sdíleným, místním a dočasným blokům, čtení a zápisů. Data poskytovaná BUFFERS může pomoci pochopit části dotazu náročné na vstupně-výstupní operace.

FORMÁT

Definuje výstupní formát. XML, JSON nebo YAML obsahují stejné informace jako TEXT, ale ve formátu, který je pro programy jednodušší. Hodnota TEXT je výchozí.