Optimizer dan Query Execution Plan (QEP)
Ketika server database menerima perintah SQL yang dikirim dari client, maka untuk mengeksekusi perintah tersebut, database perlu untuk melakukan strategi/rencana (plan) agar perintah SQL tersebut dapat dieksekusi dengan se-optimal mungkin.
1. Optimizer
Pembuatan
plan ini dapat diibaratkan seperti ketika kita akan menuju ke suatu
tempat yang jauh dan meminta bantuan google map untuk mencari rute ke
lokasi tersebut. Dari berbagai alternatif rute yang dapat ditempuh,
google map akan memberitahu rute tercepat yang dapat ditempuh
Nah
demkian juga dengan database. Pada database, bagian yang bertanggung
jawab melakukan tugas tersebut bernama optimzer. Optimizer akan membut
rencana (plan) apa yang akan dilakukan untuk mengeksekusi sebuah query.
2. Query Execution Plan (QEP)
Dalam
membuat plan, optimizer akan mempertimbangkan banyak hal seperti
struktur tabel, ukuran tabel, index, dll. Hasil planning tersebut
disebut Query Execution Plan (QEP) QEP ini dapat kita lihat melalui
statemen EXPLAIN yang akan kita bahas pada bab berikutnya.
Di hamper
semua kasus, QEP ini sudah optimal, namun pada satu atau dua kasus QEP
tidak optimal sehingga perlu campur tangan dari database administrator
(dba/user) untuk mengubahnya menjadi optimal seperti menambahkan klausa
FORCE / IGNORE INDEX pada query sehingga memaksa otimizer untuk
menggunakan / tidak menggunakan index tertentu, dengan demikian QEP pun
berubah
3. Statement
Statemen adalah sebuah Query SQL utuh yang dapat dieksekusi dengan baik. Sebuah statemen biasanya diakhiri dengan tanda titik koma (;). Tanda ini disebut delimiter.
Jika query hanya terdiri dari
satu statemen, penggunaan delimiter ini bersifat opsional, sedangkan
jika query terdiri dari lebih dari satu statemen, delimiter ini harus
digunakan. Umumnya Query terdiri hanya satu statemen, namun pada kondisi
tertentu, Query dapat terdiri dari lebih dari satu statemen.
Contoh statemen: statemen SELECT, statemen INSERT, dll
4. Klausa
Klausa merupakan bagian bagian tertentu dari statemen, sehingga cakupnnya nya lebih sempit, misal klausa FROM, klausa SELECT, dst
5. Keyword
Keyword merupakan kata yang digunakan oleh MySQL yang mewakili fungsi tertentu, misal COUNT, SELECT, SUM, dll. Dalam buku ini, terkadang kita menyebut keyword dengan klausa.
Perbedaan ketiga istilah diatas dapat dilihat pada gambar berikut ini: