1. Latar Belakang
Dalam dunia basis data, performa serta optimasi query adalah aspek yang sangat penting untuk memastikan sebuah aplikasi berjalan lebih cepat dan responsif, salah satu teknik untuk mencapai hasil query yang efisien adalah dengan indexing.
2. Alat dan Bahan
A. Perangkat Lunak
- Sistem Operasi Linux (atau yang lain)
- XAMPP atau Opt Lampp (untuk linux)
- MYSQL Database & Apache Web Server
- phpmyadmin
B. Perangkat Keras
- Laptop / PC
3. Pembahasan
3.1 Index
Index merupakan struktur data tambahan yang menyimpan informasi tentang kolom tertentu, untuk membantu dalam mempercepat proses pencarian data dalam sebuah tabel database.
3.2 Indexing
Indexing adalah teknik atau proses pembuatan dan pemanfaatan index guna meningkatkan kecepatan dan efisiensi pencarian data. Dengan melakukan indexing, kita dapat dengan cepat mengakses data yang diperlukan tanpa harus melakukan pencarian di seluruh tabel.
Sederhananya, indexing semacam daftar isi pada buku. Tanpa daftar isi, kita harus membaca dari halaman pertama sampai akhir untuk menemukan satu topik. Berikut contoh ilustrasinya, yaitu:
1. Kita buat contoh tabel terlebih dahulu
Ketik ini di SQL:
- Tanpa indexing
Ketika kita melakukan pencarian data, terlihat waktu yang dihabiskan untuk query tersebut adalah 0.0285 detik.
Dan ketika kita cek dengan EXPLAIN, query kita masih mengandalkan full table scan sehingga membuat proses keluarnya output terlihat lama (dilihat dari detiknya).
- Dengan indexing:
Kita buat terlebih dahulu indexnya, "idx_nama" boleh diisi bebas.
Selanjutnya, kita coba lakukan pencarian data. Dan hasilnya, output yang keluar hanya memerlukan waktu 0.0004 detik.
Dan jika kita cek menggunakan EXPLAIN, salah satu perubahan signifikan yang terlihat adalah bagian kolom rows yang menampilkan hanya 1 baris (Direct Lookup). Dalam kata lain, query akan langsung lompat ke data tanpa melakukan full table scan dikarenakan menggunakan index.
3.3 Jenis Index
Umumnya, terdapat 3 jenis index yang nantinya dipilih oleh sistem atau DBMS, yaitu:
1. B-tree index
Merupakan index berbentuk pohon terurut yang cepat untuk pencarian range (
>, <, BETWEEN) dan sorting. Analoginya seperti sebuah pohon dimana yang paling atas adalah petunjuk besar dan bawahnya adalah data asli. Misal kita punya data keluarga: Aldi, Budi, Doni, Nadya, Zara. Maka B-tree akan mengurutkannya menjadi sebuah struktur mirip pohon. [Doni]
/ \
[Aldi,Budi] [Nadya,Zara]
2. Hash Index
Merupakan index berbasis hash table yang sangat cepat untuk pencarian nilai exact (
=), tapi tidak bisa untuk range query.3. Bitmap Index
Merupakan index berbentuk bit (0/1) yang efisien untuk kolom dengan nilai sedikit (low cardinality), seperti gender atau status.
3.4 Jenis Pemakaian Index
1. Single-column Index (data boleh duplikat)
Index yang dibuat pada satu kolom saja pada tabel.
2. Multi-column Index
Index yang dibuat pada beberapa kolom sekaligus.
CREATE INDEX idx_kelas_jurusan ON siswa(kelas, jurusan_id);
3. Unique Index (data tidak boleh duplikat)
Index yang dibuat untuk mencegah data duplikat.
CREATE UNIQUE INDEX idx_users_username ON users(username);
3.5 Cara Index Meningkatkan Performa
A. Full Table Scan
Full table scan merupakan strategi eksekusi query yang dilakukan DBMS dengan membaca semua baris dalam tabel secara satu persatu untuk mencari data yang cocok.
- Contoh query:
SELECT * FROM siswa WHERE nama = 'Nadya';
- Kapan terjadi?
- Tidak ada index
- Query tidak bisa memakai index (misalnya LIKE '%ABC%')
- Tabel kecil / Tidak banyak data
B. Index Scan
Index scan adalah metode akses data pada database yang menggunakan index untuk mempercepat proses pencarian data dan menghindari full table scan.
- Contoh query:
CREATE INDEX idx_nama ON siswa(nama);
- Kapan dipakai?
- Kolom berisi nilai dengan jangkauan yang luas
- Kolom tersebut sering digunakan dalam WHERE clause (misalnya untuk filter data).
- Digunakan dalam JOIN antar tabel.
- Digunakan dalam ORDER BY atau GROUP BY.
- Merupakan kolom kunci (key) seperti primary key atau foreign key.
- Kolom berisi banyak nilai null
- Tabel berukuran besar dan sebagian besar query menampilkan data kurang dari 2-4%
3.6 Pengaruh Negatif Index
- Setiap index yang dibuat pasti menguras penyimpanan
- Dapat memperlambat operasi tulis (INSERT, UPDATE, DELETE) karena database harus memperbarui index setiap kali data berubah
- Menambah beban kerja DBMS karena harus memelihara dan menyinkronkan struktur index.
- Dapat mempersulit kerja Query Optimizer dalam menentukan execution plan terbaik, terutama jika terdapat terlalu banyak index.
Jadi, Index tidak selalu menjamin peningkatan perform, terutama apabila query jarang menggunakan kolom yang di-index.
3.7 Strategi Dasar Penggunaan Index
A. Kolom yang Perlu diindeks
Tidak semua kolom perlu diindeks dan index hanya efektif pada kolom yang sering dipakai untuk pencarian data. Berikut kolom yang sebaiknya diindeks, yaitu:
1. Kolom di WHERE
SELECT * FROM siswa WHERE nama = 'Nadya';
2. Kolom di JOIN
SELECT * FROM siswa
JOIN jurusan ON siswa.jurusan_id = jurusan.id;
3. Kolom di ORDER BY (mempercepat sorting)
SELECT * FROM siswa ORDER BY nama;
4. Kolom di GROUP BY (membantu grouping)
SELECT jurusan_id, COUNT(*) FROM siswa GROUP BY jurusan_id;
4. Daftar Pustaka
Santri Koding. (2026, 18 February). Belajar SQL Dasar #17: Index & Optimasi Query. Diakses dari: https://santrikoding.com/belajar-sql-dasar-17-index-optimasi-query
Inovasi Informatika Indonesia. (2016). Query SQL terasa lama? Implementasikan Index pada Database anda!. Diakses pada: https://i-3.co.id/index-pada-database/#:~:text=Baca%20Juga%20:,maka%20index%20juga%20harus%20disesuaikan.
SoalTekno.com. (2024, 23 September). Memahami Indexing Database: Kunci Performa dan Optimasi Query. Diakses dari: https://soaltekno.lokercepat.id/apa-itu-indexing-dalam-database-dan-bagaimana-cara-menggunakannya/
Planet Scale. (2023, 17 February). What are the disadvantatges of database indexes?. Diakses dari: https://planetscale.com/blog/what-are-the-disadvantages-of-database-indexes
.png)

0 Comments