Înțelegerea declarației EXPLAIN
Utilizați instrucțiunea EXPLAIN pentru a afișa planul de executare pentru interogare. EXPLICAREA poate fi utilizată cu orice instrucțiune SELECT, INSERT, UPDATE, DELETE, VALUES, EXECUTE, DECLARE sau CREATE TABLE AS.
EXPLICAȚI afișează planul de executare pentru interogare, permițându-vă să înțelegeți modul în care PostgreSQL: execută o instrucțiune, dacă se utilizează indexurile, modul în care sunt asociate tabelele și costul notional al unei interogări.
Sintaxa pentru EXPLICARE este:
EXPLAIN [ (parameter [, ...] ) ] statement
Parametrii opționali sunt:
- ANALIZA
- VERBOSE
- COSTĂ
- TAMPOANE
- FORMAT
De exemplu:
EXPLAIN ANALYZE SELECT * FROM category ORDER BY cat_id;
Această interogare simplă returnează următoarele informații:
ANALIZA
Această opțiune execută instrucțiunea și returnează planul de interogare. Ieșirea din instrucțiune este eliminată, dar instrucțiunea este încă executată. Puteți combina instrucțiunile ROLLBACK și EXPLAIN ANALYZE pentru a împiedica aplicarea modificărilor cu o interogare care efectuează modificări la baza de date, cum ar fi INSERT, UPDATE sau DELETE. De exemplu:
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
Afișează informații suplimentare, inclusiv:
- lista de coloane de ieșire pentru fiecare nod din arborele de plan
- tabelul și numele funcțiilor calificate pentru schemă
- numele variabilelor din expresii împreună cu aliasul de tabel
- numele fiecărui trigger pentru care se afișează statisticile
COSTĂ
Include costul estimat al pornirii și costul total, plus numărul estimat de rânduri și lățimea estimată a fiecărui rând.
TAMPOANE
Tampoanele pot fi utilizate numai cu opțiunea ANALYZE. PostgreSQL utilizează o memorie cache recent utilizată cel mai recent (LRU) pentru a stoca date utilizate frecvent în memorie. Bufferele afișează cât de multe date provin dintr-un cache și cât sunt preluate de pe disc. Afișează numărul de accesări, accesări, citiri și scrieri partajate, locale și temp. Datele furnizate de BUFFERS vă pot ajuta să înțelegeți părțile I/O intensive ale unei interogări.
FORMAT
Definește formatul de ieșire. XML, JSON sau YAML conțin aceleași informații ca TEXT, dar într-un format mai ușor de utilizat pentru programe. TEXT este valoarea implicită.