Indeks mempercepat pengambilan data. Tanpa indeks, basis data memindai setiap baris untuk menemukan catatan yang cocok. Dengan indeks, basis data langsung menuju ke baris yang relevan. Indeks adalah struktur data terpisah yang memetakan nilai ke lokasi. Indeks buku bekerja dengan cara yang sama. Anda mencari istilah dan menemukan nomor halamannya. Anda tidak membaca setiap halaman untuk menemukannya. Basis data melakukan hal yang sama.
Indeks memiliki biaya. Indeks membutuhkan ruang penyimpanan. Indeks memperlambat operasi penyisipan, pembaruan, dan penghapusan karena indeks juga harus diperbarui. Setiap operasi penulisan menjadi lebih mahal. Manfaatnya adalah pembacaan yang lebih cepat. Untuk beban kerja yang banyak membaca, indeks sangat penting. Untuk beban kerja yang banyak menulis, terlalu banyak indeks justru menurunkan kinerja. Memilih kolom mana yang akan diindeks membutuhkan pemahaman pola kueri. Kolom yang digunakan dalam klausa WHERE, kondisi JOIN, dan klausa ORDER BY adalah kandidat yang baik. Kolom dengan kardinalitas rendah, seperti flag boolean, adalah kandidat yang buruk karena indeks tidak mempersempit pencarian secara signifikan. Indeks komposit mencakup beberapa kolom dan dapat melayani kueri yang memfilter beberapa bidang. Urutan kolom dalam indeks komposit penting. Basis data dapat menggunakan indeks komposit untuk kueri pada kolom terdepan tetapi tidak hanya pada kolom belakang saja. Desain indeks adalah sebuah kompromi. Tujuannya adalah untuk mempercepat kueri yang penting tanpa memperlambat penulisan lebih dari yang diperlukan.
Jenis indeks
- B-tree — standar untuk sebagian besar basis data, bagus untuk kueri rentang.
- Hash — pencarian kesamaan cepat, tidak mendukung rentang.
- Bitmap — kolom dengan kardinalitas rendah, kueri analitik
- Pencarian teks lengkap
- Komposit — beberapa kolom dalam satu indeks
Indeks adalah jalan pintas. Ia mengorbankan kecepatan tulis dan penyimpanan demi kecepatan baca. Gunakan indeks di tempat di mana kecepatan baca paling penting.
Comments (3)
Leave a comment