Apa yang perlu dipertimbangkan dalam proses desain indeks, dan bagaimana indeks dapat meningkatkan kinerja kueri? Mohon berikan penjelasan yang mendalam beserta contoh penggunaannya
Desain indeks yang baik itu penting banget buat nge-boost performa kueri di database. Ada beberapa hal yang perlu dipertimbangkan:
- Pilih Kolom yang Tepat
- Indeks paling berguna buat kolom yang sering dipakai di WHERE, JOIN, atau ORDER BY.
- Jangan buat indeks di semua kolom karena bisa bikin database lambat pas insert/update/delete.
- Gunakan Indeks yang Sesuai
- Indeks Clustered: Mengatur data langsung di tabel sesuai urutan indeks (cocok buat pencarian dengan range).
- Indeks Non-Clustered: Hanya menyimpan pointer ke data utama (bagus buat pencarian cepat di satu atau beberapa kolom).
- Indeks Composite: Gabungan beberapa kolom dalam satu indeks (efektif kalau sering filter dengan lebih dari satu kolom).
- Perhatikan Overhead dan Storage
- Indeks memang mempercepat pencarian, tapi bisa memperlambat operasi INSERT, UPDATE, DELETE karena harus update indeks juga.
Contoh Penggunaan:
Misal ada tabel Penjualan dengan banyak transaksi, dan sering dicari total penjualan berdasarkan Tanggal dan Produk:
Tanpa indeks, kueri ini bakal lambat karena harus scan semua data:
<span class="hljs-keyword">SELECT</span> <span class="hljs-built_in">SUM</span>(total) <span class="hljs-keyword">FROM</span> Penjualan <span class="hljs-keyword">WHERE</span> tanggal <span class="hljs-operator">=</span> <span class="hljs-string">'2024-02-01'</span> <span class="hljs-keyword">AND</span> produk <span class="hljs-operator">=</span> <span class="hljs-string">'Laptop'</span>;
Biar lebih cepat, kita buat indeks composite:
<span class="hljs-keyword">CREATE</span> INDEX idx_penjualan <span class="hljs-keyword">ON</span> Penjualan(tanggal, produk);
Dengan indeks ini, database bisa langsung loncat ke data yang sesuai tanpa harus scan semua baris.
Jadi, indeks itu kayak daftar isi di buku. Kalau ada, kita bisa langsung loncat ke halaman yang dibutuhkan tanpa harus baca semua halaman