New day, new lab report. Nabil hereee, and today's session is all about SQL Query Optimization. Ready to explore the breakdown with me? let's goowww!
Pendahuluan
Optimasi query adalah proses meningkatkan efisiensi eksekusi query SQL untuk meminimalkan waktu eksekusi dan konsumsi sumber daya. Teknik ini dapat melibatkan pengelolaan indeks.
Beberapa teknik optimasi query yaitu: Menggunakan indeks pada kolom yang sering digunakan dalam klausa WHERE atau JOIN
- Menggunakan LIMIT untuk mengurangi jumlah data yang diambil
- Menghindari penggunaan SELECT * dan memilih kolom-kolom spesifik
- Menggunakan JOIN dari pada subquery jika memungkinkan
- Menggunakan teknik caching untuk data yang sering diakses
- Menggunakan EXPLAIN untuk menganalisis eksekusi query
Teknik Optimasi :
- CREATE INDEX UNIQUE INDEX Indeks dalam SQL adalah struktur data khusus yang digunakan untuk meningkatkan kecepatan pengambilan data dari tabel database. Salah-satunya CREATE INDEX yang digunakan untuk membuat index pada satu atau beberapa kolom tertentu, index berfungsi seperti daftar isi pada sebuah buku, dan memungkinkan data untuk menemukan baris data dengan cepat berdasarkan nilai kolom yang diindeks. Selain itu, ada juga UNIQUE INDEX ini adalah jenis index yang memastikan bahwa nilai yang ada dikolom atau kombinasi kolom tertentu harus unik, jadi tidak hanya mempercepat proses tapi juga mencegah adanya duplikasi.
- Menganalisis query dengan EXPLAIN EXPLAIN digunakan untuk melihat rencana eksekusi query dan mengidentifikasi area yang dapat dioptimalkan. dengan menggunakan explain oengguna bisa paham bagaimana server menjalankan query termasuk langkah langkah seperti penggunaan index, metode join, atau estimasi jumlah baris yang akan di proses. EXPLAIN akann menghasilkan output tabel yang berisiinformasi mengenai setiap tahap eksekusi query, seperti jenis operasi, tabel yang dgunakan dan estimasi waktu eksekusi.
Praktikum
Pada praktikum ini aku akan membuat database dengan beberapa tabel. Di praktikum ini juga aku menggunakan localhost. Kalian bisa menggunakan ini atau Command Prompt. Pertama, aku membuat database baru
Pada bagian kiri localhost di bagian atas ada ikon berbentuk tabung. Klik yang paling atas (+baru) lalu masukkan nama database yang diinginkan. Di sini aku menggunakan nama db_penjualan sesuai dengan yang ada di modul.
1.Membuat Database

Setelah membuat database, selanjutnya saya akan membuat beberapa tabel yaitu tabel produk, transaksi dan pelanggan. Cara membuatnya, klik database db_penjualan, lalu di bagian atas ada ikon bertuliskan SQL klik dan masukkan querynya.
2.Membuat Tabel
- Tabel Produk
Query :

Setelah itu, maka tabel otomatis akan muncul di bagian kiri:

Struktunya akan seperti ini :

- Tabel Transaksi
Query :

Strukturnya akan seperti ini :

- Tabel Pelanggan
Query :

Strukturnya akan terlihat seperti ini :

3. Mengisi Data Tabel
Selanjutnya aku akan mengisi data ke tabel yang sudah di buat.
- Tabel Produk
Query :

Maka tampilannya akan menjadi seperti ini :

- Tabel Transaksi
Query :

Maka tampilannya akan menjadi seperti ini :

- Tabel Pelanggan
Query:

Maka tampilannya akan menjadi seperti ini :

4. Mengoptimalkan Query
- Explain tanpa index
Query :

Maka tampilan yang akan muncul :

Bisa dilihat masih terdapat NULL terutama pada key, karena belum memiliki index.
- Membuat index pada kolom kode produk di tabel transaksi
Query :

Kita akan mencoba membandingkan hasil yang akan keluar sebelum dan sesudah dibuatnya index. Kita akan memasukkan query explain yang sama dan akan membandingkannya
Query :

Maka tampilan yang akan keluar setelah menggunakan indeks:

Perbedaan :
Yang sebelumnya kolom key NULL sekarang berubah menjadi idx_kode_produk yang artinya database menggunakan index, dan juga pencarian lebih cepat dan query menjadi lebih bagus
- Gunakan Unique Index untuk integritas data
Query :

- Uji Unique menggunakan:
Query :

Hasil Uji : Yang akan muncul adalah error karena kode prosuknya harus unik, pada uji unique di atas, kode sudah di gunakan

5. Mengevaluasi Hasil
Sebelum memakai index :
→ key isinya NULL yang artinya data belum menggunakan indeks
→ type isinya ALL yang artinya database membaca semua tabel satu per satu
→ kalau datanya banyak querynya jadi lambat
Sesudah memakai index:
→ key isinya idx_kode_produk yang artinya database sudah memakai indeks
→ type isinya ref membuat ini menjadi lebih efisien
→ Jumlah baris yang di cek lebih sedikit
→ query nya lebih cepat
Tugas
- Buat query untuk mendapatkan produk dengan harga di atas rata-rata.
Disini karena diperintahkan untuk mendapatkan harga di atas rata rata maka disini aku akan menggunakan:
avg → digunakan untuk mencari rata rata)
WHERE harga >→ mengambil produk yang harganya di atas rata-rata
Query :

Maka yang akan ditampilkan adalah :

2. Optimalkan query untuk mencari transaksi di atas nilai tertentu menggunakan indeks.
Pertama, aku membuat indeks nya terlebih dahulu
Query :

Lalu setelah itu, menjalankan explain
Query :

maka yang akan muncul adalah :

Jadi, di sini indeks dibuat di total harga buat pencarian di transaksi lebih cepat. Jadi, query lebih cepat dan optimal karena database menggunakan indeks saat melakukan pencarian data berdasarkan total harga.
3. Buat query yang menampilkan nama pelanggan beserta jumlah total transaksi mereka menggunakan JOIN.
Karena di database ini belum ada relasi antara tabel pelanggan dan transaksi, maka akan direlasikan dahulu, yaitu dengan menambahkan kolom pelanggan di tabel transaksi menggunakan alter table.
Query :

setelah itu isi data pelanggan yang ada di transaksi dan menggabungkan data menggunakan query JOIN
Query :

Maka yang akan ditampilkan adalah :

Disni, JOIN → digunakan untuk menggabungkan tabel pelanggan dengan transaksi. SUM() → digunakan untuk menjumlahkan total transaksi. GROUP BY → digunakan untuk mengelompokkan berdasarkan pelanggan
4.Evaluasi query di poin 3 menggunakan EXPLAIN.
Query :

Maka yang akan ditampilkan adalah :

Disini explain digunakan untuk melihat proses join, jadi database akan menampilkan gimana tabel pelanggan dan transaksi digabungkan dan apakah menggunakan indeks atau engga
5.Buat indeks unik pada kolom kode_produk di tabel produk.
Query :

Membuat indeks unik di kolom kode produk berfungsi agar kode produk yang ada tidak boleh di duplikat
6.Menganalisis query SELECT menggunakan EXPLAIN setelah membuat indeks pada poin 5.
Query :

Maka yang akan ditampilkan adalah:

Sesudah indeks dibuat databse jadi menggunakan indeks, hasil oencarian jadi lebih cepat, da query jadi lebih efisien
Kesimpulan
Teknik optimalisasi query penting untuk meningkatkan efisiensi proses pencarian dan pengambilan data di database, optimasi ini bisa silakukan menggunakan indeks di kolom tertentu.
Penggunaan create indeks bisa membantu mempercepat pencarian data, terutama di kolom yang sering digunakan di kondisi WHERE atau JOIN, dan juga penggunaan unique index bisa mencegah duplikasi data.
Pada penggunaan explain, kita bisa menganalisis gimana query dijalankan oleh database sebelum dan juga sesudah digunakannya indeks. Hasilnya jika menggunakan indeks database punya performa yang bagus dibandingkan tidak menggunakan indeks.
And that's it for today's session. Another lab, another lesson learned. See you in the next breakdown! thankiesss for exploring with me~~~
Refersensi
Ahmad Nugroho, S.Kom., M.Kom.(2026).TEKNIK OPTIMASI QUERY DALAM SQL. [Modul 7]