Memahami pernyataan EXPLAIN
Gunakan pernyataan EXPLAIN untuk menampilkan rencana eksekusi untuk kueri. EXPLAIN dapat digunakan dengan pernyataan SELECT, INSERT, UPDATE, DELETE, VALUES, EXECUTE, DECLARE, atau CREATE TABLE AS apa pun.
EXPLAIN menampilkan rencana eksekusi untuk kueri, memungkinkan Anda memahami bagaimana PostgreSQL menjalankan pernyataan, apakah indeks digunakan, bagaimana tabel digabungkan, dan biaya perkiraan dari sebuah kueri.
Sintaks untuk EXPLAIN adalah:
EXPLAIN [ (parameter [, ...] ) ] statement
Parameter opsional adalah:
- MENGANALISIS
- PENYEDEHANAAN KATA
- BIAYA
- BUFFER
- Format
Misalnya:
EXPLAIN ANALYZE SELECT * FROM category ORDER BY cat_id;
Kueri sederhana ini mengembalikan informasi berikut:
MENGANALISIS
Opsi ini menjalankan pernyataan, dan menampilkan rencana kueri. Output dalam pernyataan dibuang, tetapi pernyataan tersebut tetap dijalankan. Anda dapat menggabungkan pernyataan ROLLBACK dan EXPLAIN ANALYZE untuk mencegah perubahan diterapkan dengan kueri yang membuat perubahan pada database, seperti INSERT, UPDATE, atau DELETE. Misalnya:
BEGIN;
> EXPLAIN ANALYZE INSERT INTO Animal
> (ani_id, name, weight_kg, cat_id, enc_id)
> VALUES (28, 'Robin Robin', 0.5, 1, 2);
ROLLBACK;
PENYEDEHANAAN KATA
Menampilkan informasi tambahan termasuk:
- daftar kolom keluaran untuk setiap simpul di pohon perencanaan
- nama tabel dan fungsi yang memenuhi kualifikasi skema
- nama variabel dalam ekspresi bersama dengan alias tabel
- nama setiap pemicu yang statistiknya ditampilkan
BIAYA
Termasuk perkiraan biaya start-up, dan total biaya, ditambah perkiraan jumlah baris dan perkiraan lebar setiap baris.
BUFFER
Buffer hanya dapat digunakan dengan opsi ANALYZE. PostgreSQL menggunakan cache Least Recently Used (LRU) untuk menyimpan data yang sering digunakan dalam memori. Buffer menampilkan berapa banyak data yang berasal dari cache, dan berapa banyak yang diambil dari disk. Menampilkan jumlah hit, baca, dan tulis pada blok bersama, lokal, dan sementara. Data yang disediakan oleh BUFFERS dapat membantu memahami bagian intensif I/O dari kueri.
Format
Menentukan format output. XML, JSON, atau YAML berisi informasi yang sama dengan TEXT, tetapi dalam format yang lebih mudah digunakan program. TEXT adalah bawaan.