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:

  • ANALÝZA
  • PODROBNÁ
  • NÁKLADY
  • VYROVNÁVACÍ PAMĚTI
  • FORMÁT

Pří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

ANALÝZA

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. Pří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;

PODROBNÁ

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 společně 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.

VYROVNÁVACÍ PAMĚTI

Vyrovnávací paměti lze použít pouze s možností ANALYZOVAT. 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 se načte 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á vyrovnávacími paměťmi můžou pomoct 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í.