1. Latar Belakang
Pernahkah anda bertanya-tanya, apa yang terjadi setelah anda mengeksekusi query pada SQL? Bagaimana algoritma tersembunyi yang membuat query anda bekerja? seberapa cepat suatu query dapat terproses, dan apakah query tersebut dapat diproses lebih cepat? Pada artikel ini, akan dibahas bagaimana proses sebuah query dijalankan di dalam sistem database serta bagaimana optimasi query berperan penting dalam meningkatkan performa dan efisiensi pengolahan data, terutama ketika berhadapan dengan jumlah data yang besar.
2. Pembahasan
2.1 Query
Query adalah perintah yang digunakan untuk mendapatkan informasi dalam database dengan tujuan untuk melakukan tugas tertentu.
2.2 Definisi Query Optimization
Query Optimization atau Optimasi Query adalah proses memilih rencana eksekusi yang paling efisien untuk mengevaluasi suatu query dan menganalisa apakah penggunaan query dapat dipersingkat tanpa mengubah output. Optimasi query juga dapat diartikan sebagai prosedur untuk meningkatkan strategi evaluasi suatu query agar query tersebut dapat diubah menjadi query yang lebih efektif dan efisien. Namun, mengapa optimasi query itu penting? Berikut dampak penerapan optimasi query, yaitu:
- Kecepatan akses data, karena query yang tidak dioptimalkan dapat membutuhkan waktu lama untuk dijalankan, terutama pada database yang besar.
- Mengurangi beban server, query yang tidak efisien dapat mengakibatkan penurunan kinerja sistem.
- Meningkatkan pengalaman pengguna, untuk mempercepat waktu eksekusi query agar tidak membuat pengguna menunggu, kecepatan hasil dari query akan sangat mempengaruhi.
2.3 Faktor Penyebab Query Lambat
Terdapat banyak kemungkinan penyebab dari melambatnya suatu query, namun yang paling sering menjadi faktornya yaitu:
- Ukuran data, jumlah baris dapat meningkat apabila memiliki ukuran data besar yang harus dipindai atau diproses, membuat waktu eksekusi query menjadi lebih lama.
- Struktur tabel, apabila struktur tabel tidak optimal (misalnya kolom terlalu banyak, tanpa index, atau relasinya tidak efisien) dapat menyebabkan database sulit menemukan data dengan cepat.
- Query tidak efisien, query yang ditulis tanpa memperdulikan performa (misalnya menggunakan SELECT * , subquery berlebihan, atau filternya tidak tepat) membuat database melakukan pekerjaan yang tidak perlu.
2.4 Peran Database Optimizer
A. Query Planner
Query Planner adalah bagian dari DBMS (Database Management System) atau fitur sistem yang menentukan cara terbaik menjalankan query. Query planner tidak mengeksekusi query, tetapi membuat execution plan. Misalnya sebagai berikut.
Saat kita mengirim SQL:
Maka DMBS akan melakukan ini:
SQL Parser
↓
Query Planner / Optimizer // Melakukan bagian ini
↓
Query Executor
Bayangkan ketika Query Planner diberi sebuah query, maka Ia akan berpikir, “Bagaimana cara paling cepat untuk mengeksekusi query ini?”. Lalu, Query Planner akan mulai memindai:
- Pakai index scan atau full scan?
- Join tabel mana dulu?
- Pakai nested loop, hash join, atau merge join?
- Sorting strategy nya gimana?
- Materialize subquery atau tidak?
- Dan lain sebagainya.
Dan semua proses ini akan otomatis dilakukan oleh DBMS. Dan salah satu cara untuk melihat hasil kerja dari Query Planner adalah dengan menggunakan EXPLAIN.
Berikut contoh penggunaan EXPLAIN yang paling sederhana, yaitu:
1. Buat tabel sederhana (disini, saya buatkan tabel users)
2. Isi tabel dengan data dummy
Dari hasil diatas, output tersebut termasuk buruk karena dilakukannya full table scan yang tidak efisien dan memakan waktu lebih banyak, juga dikarenakan tidak menggunakan index untuk mempermudah optimasi.
B. Query Executor
Setelah Query Planner membuat rencana, Query Executor akan menjalankan rencana tersebut. Jadi, kalau planner salah memilih strategi, executor tetap menjalankan rencana tersebut meskipun query menjadi lambat.
C. Cost-Based Optimization
Merupakan teknik DBMS di mana pengoptimal query akan mengevaluasi berbagai kemungkinan dari rencana eksekusi (Query Planner & Query Executor) untuk sebuah pernyataan SQL dan memilih rencana dengan perkiraan biaya terendah (cost).
Biaya ini merupakan perkiraan numerik dari sumber daya yang dibutuhkan, seperti penggunaan CPU, penggunaan memori, jumlah row diproses, dan lain sebagainya. Tujuan utamanya adalah meminimalkan total waktu yang dibutuhkan untuk menjalankan query.
2.5 Ruang Lingkup Query Optimization
- Indexing, adalah teknik membuat struktur data tambahan agar DBMS bisa mencari data tanpa membaca seluruh tabel.
- Query writing, yaitu cara menulis SQL yang efisien agar DBMS memproses data seminimal mungkin.
- Execution plan analysis, merupakan proses membaca hasil EXPLAIN untuk mengetahui strategi DBMS saat menjalankan query.
- Data modeling, sebuah perancangan struktur tabel dan relasi agar data tersimpan rapi dan query berjalan optimal.
- Cost-based optimization, ini diterapkan oleh DBMS alias optimasi otomatis oleh sistem.
2.6 Dampak Buruk Query Optimization
- Index, index dapat membuat operasi tulis lebih lambat karena setiap query seperti insert, update, delete, database harus update tabel dan update semua index terkait.
- Memakan storage tambahan, terutama untuk penggunaan index karena ukuran database jadi bertambah dan backup jadi lebih besar.
- Query planner bisa salah strategi, karena optimizer itu pakai statistik dan hanyalah sebuah estimasi, bukan fakta. Kalau statistik tidak update, maka database bisa pilih full scan padahal index ada.
- Over-optimization, kalau semua kolom punya index maka optimizer bisa bingung memilih index dan performa bisa turun (index bloat).
3. Daftar Pustaka
Binus University Bekasi. (2026). Apa Kegunaan OPtimalisasi pada Query SQL. Diakses dari: https://binus.ac.id/bekasi/2024/11/apa-kegunaan-optimalisasi-pada-query-sql/
University of Delhi. (2020). Query processing and optimization and centralized vs distributed database. https://www.du.ac.in/du/uploads/departments/Operational%20Research/24042020_querry%20processing%20and%20optimization%20and%20centralized%20Vs%20distributed%20database.pdf

0 Comments