Informazioni sull'istruzione EXPLAIN

Completato

Usare l'istruzione EXPLAIN per visualizzare il piano di esecuzione per la query. EXPLAIN può essere usata con qualsiasi istruzione SELECT, INSERT, UPDATE, DELETE, VALUES, EXECUTE, DECLARE o CREATE TABLE AS.

EXPLAIN visualizza il piano di esecuzione per la query e consente di sapere in che modo PostgreSQL esegue un'istruzione, se vengono usati indici, come viene creato un join tra le tabelle e il costo ipotetico di una query.

La sintassi per EXPLAIN è:

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

I parametri facoltativi sono:

  • ANALISI
  • DETTAGLIATO
  • COSTS
  • BUFFERS
  • FORMAT

Ad esempio:

EXPLAIN ANALYZE SELECT * FROM category ORDER BY cat_id;

Questa semplice query restituisce le informazioni seguenti:

Screenshot che mostra il piano di query.

ANALISI

Questa opzione esegue l'istruzione e restituisce il piano di query. L'output dell'istruzione viene rimosso, ma l'istruzione viene ancora eseguita. È possibile combinare le istruzioni ROLLBACK ed EXPLAIN ANALYZE per impedire l'applicazione delle modifiche con una query che apporta modifiche al database, ad esempio INSERT, UPDATE o DELETE. Ad esempio:

BEGIN;

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

ROLLBACK;

DETTAGLIATO

Consente di visualizzare informazioni aggiuntive, ad esempio:

  • l'elenco delle colonne di output per ogni nodo nell'albero del piano
  • i nomi di funzione e di tabella qualificati dallo schema
  • i nomi delle variabili nelle espressioni unitamente all'alias della tabella
  • il nome di ogni trigger per cui vengono visualizzate le statistiche

COSTS

Include il costo di avvio stimato e il costo totale, oltre al numero stimato di righe e alla larghezza stimata di ogni riga.

BUFFERS

I buffer possono essere usati solo con l'opzione ANALYZE. PostgreSQL usa una cache di elementi usati meno di recente per archiviare i dati usati di frequente in memoria. I buffer visualizzano la quantità di dati provenienti da una cache e la quantità di dati recuperati dal disco. Visualizza il numero di accessi, letture e scritture di blocchi condivisi, locali e temporanei. I dati forniti da BUFFERS consentono di comprendere le parti con un numero elevato di operazioni di I/O di una query.

FORMAT

Definisce il formato di output. XML, JSON o YAML contengono le stesse informazioni di TEXT, ma in un formato più semplice da usare con i programmi. TEXT è l'impostazione predefinita.