Saya tahu perbedaan utama antara indeks berkerumun dan non berkerumun dan memiliki pemahaman tentang cara kerjanya. Saya memahami bagaimana indeks berkerumun dan non-berkerumun meningkatkan kinerja baca. Tetapi satu hal yang saya tidak yakin adalah apa yang akan menjadi alasan di mana saya akan memilih satu dari yang lain.
Sebagai contoh: Jika sebuah tabel tidak memiliki indeks berkerumun, haruskah seseorang membuat indeks non-cluster dan apa manfaatnya
Jawaban:
Saya hanya ingin memberikan peringatan: harap dengan sangat hati-hati pilih indeks berkerumun Anda! Setiap tabel data "biasa" harus memiliki indeks berkerumun, karena memiliki indeks berkerumun memang mempercepat banyak operasi - ya, mempercepat , bahkan menyisipkan dan menghapus! Tetapi hanya jika Anda memilih indeks berkerumun yang baik .
Ini adalah struktur data yang paling banyak direplikasi dalam database SQL Server Anda. Kunci pengelompokan akan menjadi bagian dari setiap indeks non-cluster di tabel Anda juga.
Anda harus sangat berhati-hati saat memilih kunci pengelompokan - seharusnya:
sempit (ideal 4 byte)
unik (ini adalah "penunjuk baris". Jika Anda tidak membuatnya unik, SQL Server akan melakukannya untuk Anda di latar belakang, dikenakan biaya beberapa byte untuk setiap entri dikalikan jumlah baris dan jumlah indeks yang tidak terkluster Anda punya - ini bisa sangat mahal!)
statis (tidak pernah berubah - jika memungkinkan)
idealnya terus meningkat sehingga Anda tidak akan berakhir dengan fragmentasi indeks yang mengerikan (GUID adalah kebalikan dari kunci pengelompokan yang baik - karena alasan khusus itu)
itu harus non-nullable dan idealnya juga lebar tetap - a
varchar(250)
membuat kunci pengelompokan sangat burukAda lagi yang benar-benar harus menjadi tingkat kepentingan kedua dan ketiga di belakang poin-poin ini ....
Lihat beberapa entri blog Kimberly Tripp ( Ratu Pengindeksan ) tentang topik ini - apa pun yang dia tulis di blognya benar-benar tak ternilai - baca, cerna - hidup dengan itu!
sumber
non clustered
indeks untuk kita. apa pentingnya ..?