Когда вы выполняете вставки обновлений и удалений, ваши индексы будут фрагментированы как внутри, так и снаружи.
Внутренняя фрагментация - это высокий процент свободного места на страницах индекса, что означает, что SQL Server должен читать больше страниц при сканировании индекса.
Внешняя фрагментация - это когда страницы индекса уже не в порядке, поэтому SQL Server должен выполнять больше работы, особенно в терминах ввода-вывода, чтобы прочитать индекс.
Если ваши индексы становятся слишком фрагментированными, в лучшем случае ваши запросы будут менее эффективными, но в худшем случае SQL Server просто перестанет использовать все индексы вместе, то есть практически все запросы должны будут выполнять сканирование таблицы или сканирования кластеризованного индекса. Это сильно повредит вашей производительности!
Когда вы реорганизуете индекс, SQL Server использует существующие индексные страницы и просто перетасовывает данные по этим возрастам. Это уменьшит внутреннюю фрагментацию, а также может удалить небольшое количество внешней фрагментации. Это более легкая операция, чем восстановление и всегда онлайн.
Когда вы перестраиваете индекс, SQL Server фактически восстанавливает данные индекса и использует новый набор страниц индекса. Это, очевидно, облегчит как внутреннюю, так и внешнюю фрагментацию, но это более трудоемкая операция, которая по умолчанию приводит к отключению индекса, хотя его можно выполнять как оперативную операцию, в зависимости от версии и параметров SQL Server.
Пожалуйста, не ожидайте, что после перестройки будет 0 фрагментация. Если вы не используете подсказку запроса MAXDOP, SQL Server будет распараллеливать операцию перестроения, и чем больше будет задействовано процессоров, тем больше вероятность фрагментации, поскольку каждый процессор или ядро будет перестраивать свой раздел или фрагмент индекса по отдельности, без учета друг друга. Это компромисс между лучшими уровнями фрагментации и временем, затрачиваемым на перестройку индекса. Для почти нулевой фрагментации используйте MAXDOP 1 и отсортируйте результаты в TempDB.