Saat aplikasi mengambil data dari database, developer biasanya cukup menulis query SQL untuk mendapatkan hasil yang dibutuhkan. Namun, database tidak sekadar menjalankan query tersebut tanpa perhitungan. Database perlu menentukan cara terbaik untuk mencari, menyaring, mengurutkan, dan menggabungkan data. Proses tersebut menghasilkan sebuah rencana yang disebut query execution plan. Dengan melihat execution plan, Anda dapat memahami bagaimana database memproses sebuah query dan metode apa yang digunakan untuk mengambil data.
Apa Itu Query Execution Plan?
Query execution plan adalah rencana yang menunjukkan langkah-langkah yang dipilih database untuk menjalankan sebuah query. Rencana ini menjelaskan bagaimana database mengakses tabel, mencari data, menggunakan index, melakukan filter, menggabungkan tabel, hingga mengurutkan hasil query.
Database menyusun rencana tersebut berdasarkan query yang diterima serta kondisi database pada saat proses berlangsung. Database menggunakan komponen yang disebut query optimizer untuk menentukan execution plan.
Optimizer mempertimbangkan beberapa informasi, seperti struktur tabel, index yang tersedia, statistik data, kondisi pada query, dan operasi yang perlu dilakukan. Dari berbagai kemungkinan yang tersedia, database memilih rencana yang dianggap sesuai untuk memproses query tersebut.
Execution plan dapat memberikan gambaran yang lebih jelas tentang proses di balik sebuah query SQL. Misalnya, sebuah query dapat menggunakan table scan untuk membaca data dari tabel atau menggunakan index untuk mencari data tertentu. Jika query melibatkan beberapa tabel, execution plan juga dapat menunjukkan metode yang digunakan untuk menggabungkan data tersebut.
Karena itu, memahami query execution plan membantu Anda melihat bagaimana database bekerja ketika menjalankan SQL query. Informasi ini juga berguna ketika Anda ingin memahami hubungan antara struktur query, index, dan proses pengambilan data dalam database.
Baca juga: Apa Itu Database Indexing? Cara Mempercepat Query Database – IDCloudHost
Komponen dalam Query Execution Plan

Execution plan dapat menampilkan berbagai operasi, tergantung pada jenis query dan database yang digunakan. Beberapa komponen berikut cukup umum ditemukan ketika Anda membaca execution plan.
1. Table Scan
Table scan menunjukkan bahwa database membaca data secara langsung dari tabel. Pada kondisi tertentu, database dapat membaca sebagian besar atau seluruh baris dalam tabel untuk menemukan data yang sesuai. Table scan tidak selalu berarti database melakukan proses yang buruk.
Jika tabel berukuran kecil atau query memang membutuhkan sebagian besar data, membaca tabel secara langsung dapat menjadi pilihan yang sesuai. Namun, memahami operasi ini tetap penting karena table scan dapat memberikan gambaran mengenai cara database mengambil data dari tabel.
2. Index Scan
Index scan menunjukkan bahwa database menggunakan index untuk membantu membaca data. Index menyediakan struktur tambahan yang dapat membantu database menemukan data berdasarkan kolom tertentu. Sebagai contoh, tabel pelanggan dapat memiliki index pada kolom email. Ketika aplikasi mencari pelanggan berdasarkan email, database dapat mempertimbangkan index tersebut sebagai salah satu cara untuk menemukan data.
Penggunaan index bergantung pada query dan kondisi data. Database tidak selalu menggunakan index hanya karena index tersedia. Query optimizer tetap menentukan metode yang dianggap sesuai berdasarkan informasi yang dimilikinya.
3. Index Seek
Index seek menunjukkan proses pencarian data secara lebih spesifik melalui index. Database menggunakan nilai atau kondisi tertentu untuk menemukan bagian data yang relevan. Operasi ini sering muncul ketika query mencari data berdasarkan nilai tertentu pada kolom yang memiliki index.
Misalnya, query mencari satu pelanggan berdasarkan ID atau email. Perbedaan sederhana antara scan dan seek terletak pada cara pencarian. Scan membaca sejumlah bagian dari struktur yang tersedia, sedangkan seek mengarahkan pencarian ke bagian tertentu berdasarkan kondisi query.
4. Join Operation
Ketika query mengambil data dari beberapa tabel, database perlu menggabungkan data tersebut. Proses ini menggunakan join operation. Execution plan dapat menampilkan beberapa metode join, seperti Nested Loop, Hash Join, dan Merge Join. Setiap metode memiliki cara kerja yang berbeda dan database memilihnya berdasarkan kondisi query serta data yang tersedia.
Anda tidak perlu langsung menghafalkan cara kerja setiap algoritma join. Pada tahap awal, hal yang lebih penting adalah memahami bahwa execution plan menunjukkan bagaimana database menggabungkan data dari beberapa sumber.
5. Filter
Filter menunjukkan proses penyaringan data berdasarkan kondisi tertentu. Operasi ini berkaitan dengan kondisi yang digunakan query untuk menentukan data mana yang perlu diproses atau ditampilkan.
Contohnya, query dengan kondisi WHERE status = ‘active’ perlu menyaring data agar hanya pelanggan dengan status aktif yang masuk ke hasil. Dengan melihat filter dalam execution plan, Anda dapat memahami bagaimana database menerapkan kondisi dari query terhadap data yang diproses.
6. Sort
Sort merupakan operasi untuk mengurutkan data. Database dapat menggunakan operasi ini ketika query membutuhkan pengurutan melalui ORDER BY atau ketika proses tertentu membutuhkan data dalam urutan tertentu. Execution plan dapat menunjukkan operasi sort yang digunakan database untuk memenuhi kebutuhan tersebut.
Cara Membaca Query Execution Plan
Setelah mengenal komponen dasarnya, langkah berikutnya adalah memahami cara membaca execution plan. Anda tidak perlu langsung memahami setiap detail teknis. Mulailah dengan melihat alur dan operasi yang muncul di dalamnya.
1. Mulai dari Alur Operasi
Execution plan biasanya menampilkan beberapa operasi yang saling berhubungan. Setiap operasi menggambarkan bagian tertentu dari proses eksekusi query. Pada beberapa database, execution plan tampil dalam bentuk diagram.
Pada database lain, output dapat berbentuk teks dengan struktur bertingkat. Mulailah dengan melihat hubungan antar operasi. Perhatikan operasi yang mengambil data dari tabel, kemudian lihat operasi berikutnya yang melakukan filter, join, sort, atau proses lainnya.
Pada PostgreSQL, misalnya, query plan memiliki struktur pohon dengan node pada tingkat bawah yang berfungsi sebagai sumber data dan node di atasnya yang menjalankan operasi lanjutan.
2. Perhatikan Jenis Operasi
Setelah memahami alurnya, perhatikan jenis operasi yang muncul. Cari apakah database menggunakan table scan, index scan, index seek, filter, sort, atau join. Setiap operasi memberikan informasi mengenai cara database memproses bagian tertentu dari query.
Sebagai contoh, jika Anda melihat Index Scan, database menggunakan index dalam proses pengambilan data. Jika terdapat Sort, database menjalankan proses pengurutan pada bagian tertentu dari data. Dengan mengenali nama operasi, Anda dapat mulai menerjemahkan execution plan menjadi proses yang lebih mudah dipahami.
3. Perhatikan Jumlah Baris
Execution plan juga dapat menampilkan informasi mengenai jumlah baris yang diproses atau diperkirakan oleh database. Informasi tersebut membantu Anda memahami seberapa banyak data yang melewati setiap operasi. Query yang mengambil satu data tentu memiliki kebutuhan berbeda dengan query yang memproses ribuan atau jutaan baris.
Beberapa database juga membedakan informasi estimasi dan informasi aktual. Pada SQL Server, misalnya, actual execution plan dapat memberikan informasi runtime setelah query selesai dijalankan.
4. Perhatikan Informasi Cost
Execution plan dapat menampilkan informasi cost untuk membantu menggambarkan perkiraan beban relatif dari suatu operasi. Nilai tersebut berasal dari perhitungan optimizer dan dapat membantu Anda melihat bagian tertentu dari plan yang memiliki bobot lebih besar.
Namun, jangan menganggap nilai cost sebagai waktu eksekusi dalam satuan detik. Setiap database memiliki cara sendiri dalam menghitung dan menampilkan cost. Pada PostgreSQL, misalnya, execution plan menampilkan estimasi cost pada setiap node.
PostgreSQL menggunakan informasi tersebut sebagai bagian dari proses pemilihan query plan. Karena itu, gunakan cost sebagai salah satu informasi ketika membaca execution plan, bukan sebagai satu-satunya indikator.
5. Perhatikan Penggunaan Index
Index menjadi salah satu bagian penting ketika membaca execution plan. Perhatikan apakah database menggunakan index dalam proses pencarian data. Misalnya, sebuah tabel memiliki index pada kolom email, lalu query mencari data berdasarkan kolom tersebut.
Execution plan dapat membantu Anda melihat apakah database menggunakan index dalam proses tersebut. Informasi ini juga menunjukkan hubungan antara query dan struktur database. Index yang tersedia belum tentu selalu digunakan karena database tetap mempertimbangkan kondisi query dan data sebelum memilih execution plan.
Baca juga: Jenis-Jenis Database Index dan Kapan Harus Menggunakannya – IDCloudHost
Tools untuk Melihat Query Execution Plan
Setiap database menyediakan cara untuk melihat execution plan. Meskipun konsepnya sama, sintaks dan tampilan output dapat berbeda.
1. EXPLAIN
EXPLAIN menjadi salah satu perintah yang umum digunakan untuk melihat execution plan. PostgreSQL menyediakan perintah EXPLAIN untuk menampilkan rencana yang dibuat planner untuk sebuah query. Output dari perintah tersebut memberikan informasi mengenai operasi yang akan digunakan database.
2. EXPLAIN ANALYZE
Beberapa database menyediakan EXPLAIN ANALYZE untuk memberikan informasi yang lebih lengkap berdasarkan eksekusi query. Pada PostgreSQL, EXPLAIN ANALYZE menjalankan statement dan menampilkan informasi runtime yang berkaitan dengan eksekusi tersebut.
Fitur ini berbeda dari EXPLAIN biasa karena prosesnya melibatkan eksekusi query. Karena itu, Anda perlu memahami dampaknya sebelum menggunakannya, terutama ketika menjalankan query yang mengubah data.
3. SQL Server Execution Plan
SQL Server menyediakan execution plan melalui tools seperti SQL Server Management Studio atau SSMS. Tampilan graphical execution plan membantu pengguna melihat metode pengambilan data dan operasi yang dipilih oleh Query Optimizer.
SQL Server juga membedakan estimated execution plan dan actual execution plan. Estimated plan menunjukkan rencana berdasarkan estimasi optimizer tanpa menjalankan query, sedangkan actual plan tersedia setelah query berjalan dan dapat memuat informasi runtime.
4. Tools pada MySQL dan PostgreSQL
MySQL menyediakan EXPLAIN untuk melihat informasi mengenai execution plan sebuah query. MySQL juga menyediakan format output seperti traditional, JSON, dan tree pada versi yang mendukungnya.
Sementara itu, PostgreSQL menggunakan EXPLAIN untuk menampilkan bagaimana tabel akan dipindai dan bagaimana database menjalankan operasi seperti join. Perbedaan tools tersebut tidak mengubah konsep dasarnya. Anda tetap membaca execution plan untuk memahami strategi yang dipilih database ketika menjalankan query.
Mengapa Query Execution Plan Penting?
Query execution plan memberikan gambaran tentang proses yang terjadi di balik sebuah SQL query. Tanpa execution plan, Anda hanya melihat query dan hasil akhirnya tanpa mengetahui bagaimana database mendapatkan hasil tersebut.
1. Memahami Cara Database Bekerja
Execution plan membantu Anda melihat proses pengambilan data secara lebih jelas. Anda dapat mengetahui apakah database melakukan scan, menggunakan index, menjalankan filter, melakukan join, atau mengurutkan data. Informasi tersebut membuat proses yang terjadi di balik query menjadi lebih mudah dipahami.
2. Membantu Membaca Proses Pengambilan Data
Sebuah query yang terlihat sederhana dapat melibatkan banyak operasi di database. Execution plan menunjukkan operasi tersebut sehingga Anda dapat mengikuti alurnya satu per satu. Hal ini menjadi semakin berguna ketika query melibatkan beberapa tabel, banyak kondisi, atau operasi yang lebih kompleks.
3. Membantu Mengevaluasi Query
Execution plan juga dapat menjadi bahan evaluasi ketika developer ingin memahami perilaku sebuah query. Dengan melihat plan, Anda dapat membandingkan bagaimana database menjalankan query pada kondisi tertentu.
Misalnya, perubahan struktur query atau penambahan index dapat menghasilkan execution plan yang berbeda. Perubahan tersebut dapat Anda amati melalui execution plan sebelum menentukan langkah berikutnya.
4. Mendukung Pengelolaan Database
Ketika aplikasi berkembang, jumlah data dan aktivitas database juga dapat meningkat. Pemahaman mengenai execution plan membantu developer dan database administrator membaca proses yang terjadi pada database. Dengan kemampuan tersebut, execution plan dapat menjadi salah satu bagian penting dalam pemantauan dan pengelolaan database.
Baca juga: Connection Pooling vs Koneksi Database Biasa, Perbedaannya? – IDCloudHost
Penutup
Query execution plan adalah gambaran mengenai cara database menjalankan sebuah query. Database menggunakan query optimizer untuk memilih langkah yang sesuai berdasarkan query, struktur tabel, index, statistik, dan kondisi data. Untuk membacanya, Anda dapat mulai dari alur operasi, kemudian mengenali komponen seperti table scan, index scan, index seek, join, filter, dan sort. Informasi jumlah baris, cost, serta penggunaan index juga dapat membantu Anda memahami proses yang berlangsung di balik query.
Jika aplikasi terus berkembang, kebutuhan database dan resource server juga dapat meningkat. IDCloudHost menyediakan Cloud VPS dengan resource yang dapat disesuaikan dengan kebutuhan aplikasi dan workload database. Dengan infrastruktur yang sesuai, Anda dapat menjalankan aplikasi dan database pada lingkungan server yang mendukung kebutuhan performa dan pertumbuhan aplikasi.