Saat Anda melakukan pembaruan dan penghapusan sisipan, indeks Anda akan menjadi terfragmentasi baik secara internal maupun eksternal.
Fragmentasi internal adalah Anda memiliki persentase tinggi ruang kosong pada halaman indeks Anda, artinya SQL Server perlu membaca lebih banyak halaman saat memindai indeks.
Fragmentasi eksternal adalah ketika halaman indeks tidak dalam urutan lagi, sehingga SQL Server harus melakukan lebih banyak pekerjaan, terutama dalam hal IO untuk membaca indeks.
Jika indeks Anda menjadi terlalu terfragmentasi, paling-paling, kueri Anda akan kurang efisien tetapi paling buruk, SQL Server hanya akan berhenti menggunakan indeks secara bersamaan, artinya hampir semua kueri harus melakukan pemindaian tabel atau pemindaian indeks berkerumun. Ini akan sangat merusak kinerja Anda!
Ketika Anda mengatur ulang indeks, maka SQL Server menggunakan halaman indeks yang ada dan hanya mengacak data pada usia tersebut. Ini akan mengurangi fragmentasi internal dan juga dapat menghilangkan sejumlah kecil fragmentasi eksternal. Ini adalah operasi yang lebih ringan daripada membangun kembali dan selalu online.
Ketika Anda membangun kembali indeks, SQL Server sebenarnya menggunakan data indeks dan menggunakan kumpulan halaman indeks yang baru. Ini jelas akan mengurangi fragmentasi internal dan eksternal tetapi merupakan operasi yang lebih berat dan secara default menyebabkan indeks untuk offline, meskipun dapat dilakukan sebagai operasi online, tergantung pada versi dan pengaturan SQL Server Anda.
Harap jangan berharap memiliki 0 fragmentasi setelah Rebuild. Kecuali Anda menggunakan petunjuk permintaan MAXDOP, SQL Server akan memparalelkan operasi pembangunan kembali dan semakin banyak prosesor yang terlibat, semakin besar kemungkinan terjadi fragmentasi, karena setiap prosesor atau inti, akan membangun kembali bagian atau fragmen indeks secara terpisah, tanpa memperhatikan satu sama lain. Ini adalah pertukaran antara tingkat fragmentasi terbaik dan waktu yang dibutuhkan untuk membangun kembali indeks. Untuk fragmentasi mendekati 0, gunakan MAXDOP 1 dan urutkan hasilnya di TempDB.