Saya tidak begitu terbiasa dengan database dan sekarang saya mencoba memahami mekanisme pengindeksan.
Dari yang saya tahu, dalam RDBMS, pengindeksan pada kolom membuat pencarian dengan kolom itu lebih cepat. Ini juga berlaku untuk tiga toko, hanya ada indeks yang menganggap Anda akan mencari (misalnya) sebagian besar berdasarkan subjek, kemudian oleh objek dan sebagainya.
Saya tidak yakin tentang RDBMS, tetapi di tiga toko Anda dapat menentukan lebih dari satu indeks, membiarkan toko memilih indeks terbaik untuk setiap permintaan (mudah-mudahan saya mengerti ini dengan benar). Secara alami, pertanyaan berikut muncul:
Mengapa saya tidak harus menambahkan semua indeks yang mungkin ke tiga toko, dan memperluas ke RDBMS, mengapa tidak membuat indeks pada setiap kolom (dengan asumsi saya tidak terlalu malas)?
Hanya tempatkan indeks saat dibutuhkan. Sebagai aturan praktis ketika saya mengembangkan skema database, setiap tabel mendapatkan Indeks Primer Kunci Utama PK untuk memulai. Ini akan menjadi pengidentifikasi unik untuk data dalam tabel itu. Bisa di 1 kolom atau banyak.
Setelah itu, saya biasanya hanya menambahkan Indeks Unik Non-Clustered pada kolom yang ingin saya tegakkan keunikannya.
Ini adalah skema dasar. Saat aplikasi dikembangkan dan matang, kami menambahkan indeks sesuai kebutuhan berdasarkan kekhawatiran kinerja dan bagaimana kami meminta data.
Setiap peningkatan indeks ditambahkan spasi yang digunakan serta menambahkan tambahan pemeliharaan. Jadi pilih indeks Anda dengan bijak.
sumber
Kekuatan Indeks adalah bahwa mereka adalah 1) struktur data yang dapat dengan cepat dicari melalui dan 2) lebih kompak dari tabel sebenarnya, memungkinkan lebih banyak indeks untuk masuk ke dalam memori daripada dipindahkan ke disk.
Jika Anda memiliki indeks pada setiap kolom, maka indeks itu sendiri akan mengambil lebih banyak ruang daripada tabel yang mereka wakili. Jika database benar-benar menggunakan semua indeks, itu akan membutuhkan lebih banyak waktu hanya untuk menukar mereka masuk dan keluar dari memori. Selain itu, setiap indeks harus diperbarui pada lembam, memperbarui, atau menghapus.
Selain itu, indeks pada satu kolom bahkan bukan yang terbaik yang dapat Anda lakukan. Kebanyakan database relasi sebenarnya memungkinkan indeks pada banyak kolom, dan urutan kolom ini penting. Misalnya, jika saya ingin mencari basis data untuk semua orang yang pergi ke Duke dari kelas antara 1980 dan 1984, maka yang saya inginkan adalah indeks pada (Sekolah, Kelas Tahun). Kueri tidak akan dapat menggunakan indeks dengan kolom yang sama, tetapi dibalik.
Jadi untuk membuat setiap indeks yang mungkin, setidaknya ada n! cara mengatur kolom dalam indeks. Dengan hanya 5 kolom, ada 120 kemungkinan indeks.
Karena ada banyak kemungkinan indeks, Anda benar-benar harus menentukan indeks apa yang berguna untuk aplikasi Anda dan hanya membuat itu.
sumber
Membuat indeks untuk setiap kolom dalam sebuah tabel biasanya merupakan pemborosan ruang, dan seperti yang telah disebutkan, hal itu dapat memperlambat operasi penyisipan / pembaruan. Indeks digunakan untuk mempercepat kueri. Saya hanya merekomendasikan menambahkan indeks ke kolom jika Anda melihat kinerja yang buruk ketika meminta nilai dalam kolom itu.
Beberapa database mungkin memerlukan indeks untuk kunci utama tabel sehingga Anda mungkin tidak punya pilihan tentang itu. Juga, jika Anda memiliki kolom teks yang sangat besar, ada teknologi spesifik yang dirancang untuk pencarian dan indeks teks lengkap, tetapi mereka tidak selalu sama dengan indeks yang akan Anda gunakan untuk kolom numerik kecil.
sumber