Perbedaan
-
KUNCI atau INDEX mengacu pada indeks non-unik normal. Nilai indeks yang tidak berbeda diperbolehkan, sehingga indeks mungkin berisi baris dengan nilai identik di semua kolom indeks. Indeks ini tidak memberlakukan pembatasan apa pun pada data Anda sehingga hanya digunakan untuk akses - untuk mencapai rentang catatan tertentu dengan cepat tanpa memindai semua catatan.
-
UNIK mengacu pada indeks di mana semua baris indeks harus unik. Artinya, baris yang sama mungkin tidak memiliki nilai non-NULL yang identik untuk semua kolom dalam indeks ini sebagai baris lain. Selain digunakan untuk mencapai rentang rekor tertentu dengan cepat, indeks UNIK dapat digunakan untuk menerapkan pembatasan pada data, karena sistem basis data tidak mengizinkan aturan nilai yang berbeda dilanggar saat memasukkan atau memperbarui data.
Sistem database Anda memungkinkan indeks UNIK untuk diterapkan ke kolom yang memungkinkan nilai NULL, dalam hal ini dua baris diizinkan untuk identik jika keduanya berisi nilai NULL (alasannya di sini adalah bahwa NULL dianggap tidak sama dengan dirinya sendiri). Namun, bergantung pada aplikasi Anda, Anda mungkin temukan ini tidak diinginkan:jika Anda ingin mencegahnya, Anda harus melarang nilai NULL di kolom yang relevan.
-
PRIMER bertindak persis seperti indeks UNIK, kecuali bahwa ia selalu bernama 'PRIMARY', dan mungkin hanya ada satu di atas meja (dan harus ada selalu menjadi satu; meskipun beberapa sistem basis data tidak menerapkan ini). Indeks PRIMARY dimaksudkan sebagai sarana utama untuk secara unik mengidentifikasi setiap baris dalam tabel, jadi tidak seperti UNIK, indeks tidak boleh digunakan pada kolom mana pun yang memungkinkan nilai NULL. Indeks PRIMARY Anda harus berada pada jumlah kolom terkecil yang cukup untuk mengidentifikasi sebuah baris secara unik. Seringkali, ini hanya satu kolom yang berisi nomor unik yang bertambah secara otomatis, tetapi jika ada hal lain yang dapat mengidentifikasi baris secara unik, seperti "kode negara" dalam daftar negara, Anda dapat menggunakannya sebagai gantinya.
Beberapa sistem basis data (seperti InnoDB MySQL) akan menyimpan catatan tabel pada disk sesuai urutan kemunculannya di indeks PRIMARY.
-
TEKS LENGKAP indeks berbeda dari semua hal di atas, dan perilaku mereka berbeda secara signifikan antara sistem database. Indeks FULLTEXT hanya berguna untuk pencarian teks lengkap yang dilakukan dengan klausa MATCH() / AGAINST(), tidak seperti tiga di atas - yang biasanya diterapkan secara internal menggunakan b-tree (memungkinkan untuk memilih, menyortir, atau rentang mulai dari kolom paling kiri) atau tabel hash (memungkinkan pemilihan dimulai dari kolom paling kiri).
Di mana jenis indeks lainnya adalah tujuan umum, indeks FULLTEXT khusus, karena melayani tujuan yang sempit:hanya digunakan untuk fitur "pencarian teks lengkap".
Kesamaan
-
Semua indeks ini mungkin memiliki lebih dari satu kolom di dalamnya.
-
Dengan pengecualian FULLTEXT, urutan kolom penting:agar indeks berguna dalam kueri, kueri harus menggunakan kolom dari indeks mulai dari kiri - kueri tidak dapat menggunakan hanya bagian kedua, ketiga, atau keempat dari suatu indeks, kecuali jika juga menggunakan kolom sebelumnya dalam indeks untuk mencocokkan nilai statis. (Agar indeks FULLTEXT berguna untuk kueri, kueri harus menggunakan semua kolom indeks.)