Manfaat dan Cara Menggunakan Perintah Explain Plan

Perintah explain plan pada Oracle SQLPlus adalah perintah yang sangat berguna dalam proses optimasi query. Explain plan berguna untuk:

  1. Memperkirakan “biaya” query (query cost), baik dari sisi kebutuhan memory (dalam satuan bytes) maupun kebutuhan tenaga komputasi (dalam satuan I/O Unit dan persentase penggunaan CPU)
  2. Menampilkan urutan langkah Oracle dalam memproses sebuah query
  3. Memperkirakan waktu yang dibutuhkan untuk mengeksekusi sebuah query

Cara menggunakan perintah explain plan cukup mudah, yaitu dengan menambahkan klausa EXPLAIN PLAN FOR di awal query

Contohnya

Setelah itu, untuk melihat plan table hasil dari perintah explain plan dapat digunakan perintah berikut ini

 Select * from table(dbms_xplan.display); 

Perhatikan plan table yang dihasilkan pada screenshot berikut ini:

Cara membaca plan table dapat dilihat pada gambar di bawah ini:

Satu hal yang menarik dari perintah explain plan adalah bahwa dengan menggunakan perintah ini kita dapat memilih query yang lebih efisien dari beberapa pilihan query yang memberikan hasil yang sama. Perhatikan contoh dua query berikut ini:

Query A:

 select first_name, salary
from employees E join departments D
on (E.department_id = D.department_ID)
where department_name = 'Finance'
order by salary
/ 

Query B:

 select first_name, salary
from employees E
where department_id =
(select department_id
from departments D
where department_name = 'Finance')
order by salary
/

Baik query A maupun query B memberikan hasil yang sama, yaitu menampilkan daftar nama dan  gaji karyawan di departemen ‘Finance’.

Namun demikian, jika kita menggunakan perintah explain plan maka terlihat bahwa dua query ini diproses oleh oracle dengan cara yang berbeda sehingga memikili tingkat efisiensi yang berbeda pula.

Perhatikan plan table untuk Query A pada gambar berikut:

dan bandingkan dengan plan table untuk Query B pada gambar berikut:

Query B yang menggunakan nested query terbukti lebih hemat dalam penggunaan memory  dibandingkan query A yang menggunakan join (140 bytes vs 300 bytes). Adapun jika ditinjau dari sisi kebutuhan tenaga komputasi, query A membutuhkan 5 I/O Unit dengan 20% penggunaan CPU sedangkan query B membutuhkan 6 I/O Unit dengan 17% penggunaan CPU, saya tidak tau mana yang lebih baik, 😛
Eniwey
, jika ditinjau dari sisi penggunaan memory, query B masih lebih baik daripada query A. Tentu saja tidak ada jaminan bahwa query dengan nested query akan selalu lebih baik daripada query dengan join, banyak faktor yang mempengaruhi, misalnya ketersediaan index, jumlah data dan sebagainya. Lagipula, angka-angka yang ditampilkan pada plan table sifatnya hanya perkiraan atau estimasi saja, karena query nya tidak benar-benar dieksekusi, mungkin klo di Indonesia istilahnya “hasil penerawangan” :lol:.
Anyway, it’s still very useful, isn’t it?

Selamat mencoba. Semoga bermanfaat 🙂

Iklan

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s