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 itu penting buat optimalkan performa kueri di database.
Hal yang perlu dipertimbangkan:
- Kolom yang sering dicari atau difilter → Misalnya, kolom “customer_id” di tabel transaksi.
- Jenis indeks yang dipilih → Clustered (mengurutkan data fisik) atau Non-clustered (cuma menyimpan pointer ke data).
- Ukuran indeks → Terlalu banyak indeks bisa memperlambat INSERT/UPDATE/DELETE.
- Selektivitas data → Indeks lebih efektif kalau data unik atau punya variasi tinggi.
Contoh:
Tabel Orders
dengan kolom: order_id
, customer_id
, order_date
, total_amount
.
Tanpa indeks:
sql
<span class="hljs-keyword">SELECT</span> <span class="hljs-operator">*</span> <span class="hljs-keyword">FROM</span> Orders <span class="hljs-keyword">WHERE</span> customer_id <span class="hljs-operator">=</span> <span class="hljs-number">123</span>;
Ini bakal scan seluruh tabel (lama kalau datanya banyak).
Dengan indeks:
sql
<span class="hljs-keyword">CREATE</span> INDEX idx_customer <span class="hljs-keyword">ON</span> Orders(customer_id);
Sekarang query bisa langsung melompat ke baris yang dicari tanpa cek semua data