Informazioni sull'istruzione EXPLAIN
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:
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.