Apa perbedaan antara pencarian Indeks Clustered (CI) dan Non Indeks Clustered (NCI)? Apakah yang satu berkinerja lebih baik daripada yang lain?
Alasan saya menanyakan hal ini adalah karena saya memiliki meja dengan 50 juta baris dan 150 kolom. Itu memiliki kolom bernama ID
didefinisikan sebagai indeks berkerumun. Ada satu lagi NCI di atasnya dengan ID kunci indeks yang sama dan include
kolom tujuh- d. Sepertinya saya bahwa indeks NC adalah duplikat di sini dan dapat dengan aman dijatuhkan.
Jadi saya ingin beberapa pendapat ahli / saran jika dapat dijatuhkan dengan aman atau harus tetap utuh?
sql-server
sql-server-2012
index-tuning
SQLPRODDBA
sumber
sumber
Jawaban:
Indeks nonclustered yang memiliki kunci yang sama * sebagai indeks berkerumun, mungkin masih berguna, karena indeks nonclustered biasanya akan lebih kecil dan lebih padat. Ingat, indeks berkerumun mencakup semua data dalam baris, sehingga biasanya merupakan indeks terluas (paling tidak padat).
* Kolom kunci yang sama, dalam urutan yang sama, diurutkan dengan cara yang sama (asc / desc).
Untuk pencarian tunggal (pencarian menggunakan predikat kesetaraan ke dalam indeks yang unik), perbedaan utama adalah peluang yang dianggap lebih besar dari halaman indeks yang diperlukan untuk menemukan bahwa rekaman tunggal sudah ada dalam memori. Semua hal sama, indeks nonclustered dengan 100 halaman memiliki peluang lebih baik daripada indeks cluster yang disimpan pada 10.000 halaman.
Untuk jenis pencarian lain apa pun kecuali singleton, akan ada komponen pemindaian juga. Bagian pemindaian juga akan mendapat manfaat dari kepadatan indeks nonclustered yang lebih besar (lebih banyak baris per halaman). Bahkan jika halaman-halaman tersebut harus berasal dari penyimpanan yang persisten, membaca lebih sedikit halaman lebih cepat.
Anda harus memeriksa dokumentasi sistem, meminta orang yang menambahkan indeks, dan / atau mencari komentar kode untuk memahami mengapa indeks ini ada. Anda juga perlu memeriksa definisi indeks lengkap dengan cermat, termasuk kompresi, dan melihat skrip pemeliharaan indeks. Mungkin ada alasan khusus lainnya untuk memiliki indeks yang tidak tercakup (mis. Kemampuan untuk membangun kembali secara online).
sumber