Explain plan
Tekan ⌘E di SQL editor untuk melihat rencana eksekusi statement di posisi kursor tanpa menjalankannya, atau ⌥⌘E untuk menjalankannya dan melihat waktu sebenarnya. Rencana tampil di tab hasil Explain sebagai pohon, dengan langkah paling lambat atau paling mahal ditandai.

Explain atau Explain Analyze
| Aksi | Tombol | Fungsinya |
|---|---|---|
| Explain | ⌘E | Meminta perkiraan rencana dari planner. Statement tidak dijalankan. |
| Explain Analyze | ⌥⌘E | Menjalankan statement dan melaporkan yang benar-benar terjadi: baris aktual, loop dan waktu per langkah. |
Keduanya bekerja pada statement di posisi kursor, atau pada teks yang Anda pilih. Tombol Explain di toolbar editor sama dengan ⌘E. Selama rencana diproses, header menampilkan jam berjalan, jadi Anda tahu Explain Analyze sedang benar-benar mengeksekusi statement.
Yang dilaporkan tiap database
Selekta mengirim statement dengan sintaks explain milik database itu sendiri, lalu membaca hasilnya.
| Database | Explain | Explain Analyze |
|---|---|---|
| PostgreSQL | EXPLAIN (FORMAT JSON) |
EXPLAIN (ANALYZE, BUFFERS, FORMAT JSON) |
| MySQL dan MariaDB | EXPLAIN FORMAT=JSON |
EXPLAIN ANALYZE |
| SQL Server | SET SHOWPLAN_XML ON |
SET STATISTICS XML ON |
| SQLite | EXPLAIN QUERY PLAN |
EXPLAIN QUERY PLAN |
PostgreSQL dengan Explain Analyze juga menampilkan waktu planning, waktu eksekusi, serta shared buffer yang kena cache dan yang dibaca. SQL Server dengan Statistics XML menampilkan waktu elapsed dan CPU. Di SQL Server, Explain Analyze menjalankan statement tetapi hanya menampilkan rencananya, bukan baris hasil statement itu.
SQLite
SQLite hanya melaporkan tabel mana yang di-scan atau dicari dan index mana yang dipakai. Tidak ada biaya, perkiraan baris atau waktu, jadi tidak ada pohon dan bar. Selekta menampilkan rencana sebagai teks, seperti yang dicetak shell sqlite3, dengan panduan singkat di bawahnya: SEARCH dengan index itu bagus, SCAN berarti setiap baris tabel itu dibaca. Pakai Measure with Run timing untuk menjalankan statement seperti biasa dan melihat lamanya.
Membaca pohon rencana
Bar ringkasan di atas menyebut mode explain dan menampilkan total yang dilaporkan database. Di sebelah kanan, pilih Tree, Table atau Raw.
Di tampilan Tree, setiap baris adalah satu langkah rencana, menjorok di bawah induknya:
- Node adalah operasinya, misalnya
Seq Scan,Index Scan,Hash JoinatauFull table scan, diikuti tabel, index dan filternya. - Cost dan Rows est adalah perkiraan planner.
- Dengan Explain Analyze ada juga Rows actual, Total (waktu termasuk langkah anak) dan Self (waktu langkah ini saja).
- Bar menunjukkan Self time dengan Explain Analyze, atau Self cost tanpanya.
Langkah dengan porsi terbesar diberi tag slowest (dengan waktu) atau costliest (hanya perkiraan), dan langsung terpilih saat rencana terbuka. Jumlah baris berwarna peringatan berarti perkiraannya meleset lebih dari 10 kali, biasanya tanda statistik tabel sudah usang.
Pakai tombol panah untuk bergerak di pohon, dan untuk menutup atau membuka sebuah langkah. Klik panah di samping langkah untuk melakukan hal yang sama dengan mouse.
Node terpilih
Di bawah pohon, langkah yang dipilih menampilkan detailnya: loop, baris yang dibuang filter, buffer, ruang sort, worker paralel, logical read, atau perkiraan I/O dan CPU, tergantung database. Langkah paling lambat juga mendapat Hint: porsinya dari waktu eksekusi atau biaya, dan kalau langkah itu full scan dengan filter, catatan bahwa index pada kolom yang difilter mungkin membantu.
Tampilan Table dan Raw
Table menampilkan setiap langkah sebagai baris dengan kolom parent, node, detail, cost, rows_est, rows_actual, loops, total_ms dan self_ms. Klik header kolom angka untuk mengurutkan. ⌘C menyalin baris yang dipilih, atau semua baris kalau tidak ada yang dipilih, sebagai teks dipisah tab.
Raw menampilkan rencana persis seperti yang dikirim server: JSON untuk PostgreSQL dan MySQL, XML showplan untuk SQL Server. Copy plan menyalinnya ke clipboard, misalnya untuk dibagikan ke rekan kerja.