Что следует использовать после того, как испортил кластерный индекс? Обновление статистики, реиндекс или реорганизации

dba.stackexchange https://dba.stackexchange.com/questions/16702

Вопрос

Если у меня есть кластерный индекс с одним столбцом, например, 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 всегда проводится в Интернете.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с dba.stackexchange
scroll top