Что следует использовать после того, как испортил кластерный индекс? Обновление статистики, реиндекс или реорганизации
-
22-10-2019 - |
Вопрос
Если у меня есть кластерный индекс с одним столбцом, например, FooId
В SQL Server 2008, 2012, и я знаю, что испортил порядок строк, чтобы не иметь последовательного порядка FooId
столбец больше, какая команда должна использоваться:
- Обновление статистики
- Восстановить
- Реорганизовать
РЕДАКТИРОВАТЬ
СценарийFooId
является кластерным PK типа последовательного уникального уникального идентификатора, но для того, чтобы сохранить его простой, в этом посте мы используем #1 в качестве значений ID.
#1 inserted
#2 inserted
#3 inserted
#1 selected
#1 deleted
#2 selected
#2 deleted
#2 inserted
(Это повторно использует кластерную PK #1)
#1 inserted
(Это повторно использует кластерную PK #1)
Разве это не сломает последовательный заказ? Не будет ли он храниться так сейчас:
#3
#2
#1
// Даниэль
Решение
Возможно, вы неправильно поняли, как работает кластерный индекс - по определению Данные логически упорядочены в последовательности кластеризационной клавиши, хотя кластерный индекс может стать физически фрагментированным, когда появляются сфиты страниц, когда появляются новые данные.
Если вы хотите уменьшить фрагментацию REBUILD
или же REORGANIZE
может быть уместным. Правило большого пальца - ничего не делать, когда фрагментация ниже 5%, REORGANIZE
Когда фрагментация составляет от 5% до 30%, и REBUILD
Когда фрагментация превышает 30%.
Фрагментация индекса регистрируется в DMV sys.dm_db_index_physical_stats. Анкет Смотрите также страница MSDN на REBUILD/REORGANIZE
Стоит отметить, что, если вы не запускаете SQL Server Enterprise Edition, REBUILD
Нельзя выполнить онлайн - это означает, что ваша таблица будет недоступна на протяжении всей команды. REORGANIZE
всегда проводится в Интернете.