В разделе, посвященном общему списку регламентных работ («Теория», раздел ), не упоминается дефрагментация индексов, поскольку там указывается ежедневное выполнение реиндексации базы, а после реиндексации необходимость делать дефрагментацию индексов отпадает.
Тем не менее реиндексация – это операция, почти не позволяющая во время ее выполнения кому-то еще полноценно работать (реиндексация таблиц блокирует их на все время своей работы). А дефрагментация индексов не блокирует таблицы, а только создает дополнительную нагрузку на SQL Server. Поэтому если нет возможности ежедневно выполнять реиндексацию, то следует делать по крайней мере дефрагментацию индексов.
Смысл этой операции состоит в том, что устраняется эффект фрагментации индексов, который возникает при интенсивной работе с таблицами базы данных и который может привести к снижению эффективности работы запросов.
Дефрагментация всех индексов всех таблиц базы данных выполняется путем запуска SQL-запроса (в нем необходимо указать имя базы):
sp_msforeachtable N'DBCC INDEXDEFRAG (имя базы данных>, ''?'')'
При необходимости также можно проводить дефрагментацию не для всех таблиц, а только для некоторых.
Чтобы дефрагментация индексов выполнялась по расписанию автоматически, нужно сделать следующее:
 
Рис. 4.4.2. Настройка свойств задачи дефрагментации индексов