Ada beberapa konsep dan istilah yang penting untuk dipahami ketika berhadapan dengan indeks. Mencari, memindai, dan mencari adalah beberapa cara indeks akan digunakan melalui pernyataan pilihan. Selektivitas kolom kunci merupakan bagian integral untuk menentukan seberapa efektif suatu indeks.
Pencarian terjadi ketika SQL Server Query Optimizer menentukan bahwa cara terbaik untuk menemukan data yang Anda minta adalah dengan memindai rentang dalam indeks. Mencari biasanya terjadi ketika kueri "ditutupi" oleh indeks, yang berarti predikat pencarian ada di kunci indeks dan kolom yang ditampilkan berada di kunci atau disertakan. Pemindaian terjadi ketika SQL Server Query Optimizer menentukan bahwa cara terbaik untuk menemukan data adalah dengan memindai seluruh indeks dan kemudian menyaring hasil. Pencarian biasanya terjadi ketika indeks tidak menyertakan semua kolom yang diminta, baik di kunci indeks atau di kolom yang disertakan. Pengoptimal kueri kemudian akan menggunakan kunci berkerumun (terhadap indeks berkerumun) atau RID (terhadap heap) untuk "mencari" kolom yang diminta lainnya.
Biasanya, mencari operasi lebih efisien daripada pemindaian, karena secara fisik meminta set data yang lebih kecil. Ada situasi di mana ini bukan masalahnya, seperti kumpulan data awal yang sangat kecil, tetapi itu melampaui ruang lingkup pertanyaan Anda.
Sekarang, Anda bertanya bagaimana menentukan seberapa efektif suatu indeks, dan ada beberapa hal yang perlu diingat. Kolom kunci indeks berkerumun disebut kunci pengelompokan. Ini adalah bagaimana catatan dibuat unik dalam konteks indeks berkerumun. Semua indeks nonclustered akan menyertakan kunci yang dikelompokkan secara default, untuk melakukan pencarian ketika diperlukan. Semua indeks akan dimasukkan, diperbarui, atau dihapus dari untuk setiap pernyataan DML masing-masing. Yang telah dikatakan, yang terbaik adalah menyeimbangkan kenaikan kinerja dalam pernyataan pilih terhadap hit kinerja dalam menyisipkan, menghapus, dan memperbarui pernyataan.
Untuk menentukan seberapa efektif indeks, Anda harus menentukan selektivitas kunci indeks Anda. Selektivitas dapat didefinisikan sebagai persentase dari catatan yang berbeda terhadap total catatan. Jika saya memiliki tabel [orang] dengan 100 catatan total dan kolom [first_name] berisi 90 nilai yang berbeda, kita dapat mengatakan bahwa kolom [first_name] adalah 90% selektif. Semakin tinggi selektivitas, semakin efisien kunci indeks. Mempertahankan selektivitas dalam pikiran, yang terbaik adalah menempatkan kolom paling selektif Anda terlebih dahulu di kunci indeks Anda. Menggunakan contoh [orang] saya sebelumnya, bagaimana jika kami memiliki kolom [nama_k belakang] yang selektif 95%? Kami ingin membuat indeks dengan [last_name], [first_name] sebagai kunci indeks.
Saya tahu ini adalah jawaban yang agak bertele-tele, tetapi sebenarnya ada banyak hal yang menentukan seberapa efektif suatu indeks, dan banyak hal yang harus Anda pertimbangkan jika ada kenaikan kinerja.