index_option (Transact-SQL)

Определяет набор параметров, которые могут применятся к индексу, являющемуся частью определения ограничения, созданному при помощи инструкции ALTER TABLE.

Значок ссылки на разделСоглашения о синтаксическом обозначении в Transact-SQL

Синтаксис

{ 
    PAD_INDEX = { ON | OFF }
  | FILLFACTOR = fillfactor
  | IGNORE_DUP_KEY = { ON | OFF }
  | STATISTICS_NORECOMPUTE = { ON | OFF }
  | ALLOW_ROW_LOCKS = { ON | OFF }
  | ALLOW_PAGE_LOCKS = { ON | OFF }
  | SORT_IN_TEMPDB = { ON | OFF } 
  | ONLINE = { ON | OFF }
  | MAXDOP = max_degree_of_parallelism
  | DATA_COMPRESSION = { NONE |ROW | PAGE}
      [ ON PARTITIONS ( { <partition_number_expression> | <range> } 
            [ , ...n ] ) ]
}

<range> ::= 
<partition_number_expression> TO <partition_number_expression>

<single_partition_rebuild__option> ::=
{
    SORT_IN_TEMPDB = { ON | OFF }
  | MAXDOP = max_degree_of_parallelism
  | DATA_COMPRESSION = {NONE | ROW | PAGE } }
}

Аргументы

  • PAD_INDEX = { ON | OFF }
    Определяет заполнение индекса. Значение по умолчанию — OFF.

    • ON
      Процент свободного места, определяемый параметром FILLFACTOR, применяется к страницам индекса промежуточного уровня.

    • OFF или fillfactor не указан
      Страницы промежуточного уровня заполнены почти в соответствии их производительным возможностям, на них остается место как минимум для одной строки максимального размера, какой только может иметь индекс, с заданным набором ключей на промежуточных страницах.

  • FILLFACTOR **=**fillfactor
    Определяет величину в процентах, показывающую насколько должен компонент Database Engine заполнять конечный уровень каждой страницы индекса во время его создания и изменения. Заданное значение должно быть целым числом от 1 до 100. Значение по умолчанию равно 0.

    ПримечаниеПримечание

    Значения коэффициента заполнения 0 и 100 одинаковы во всех отношениях.

  • IGNORE_DUP_KEY = { ON | OFF }
    Определяет ответ на ошибку, случающуюся, когда операция вставки пытается вставить в уникальный индекс повторяющиеся значения ключа. Параметр IGNORE_DUP_KEY применяется только к операциям вставки, производимым после создания или перестроения индекса. Параметр не работает во время выполнения инструкции CREATE INDEX, ALTER INDEX или UPDATE. Значение по умолчанию — OFF.

    • ON
      Если в уникальный индекс вставляются повторяющиеся значения ключа, выводится предупреждающее сообщение. С ошибкой завершаются только строки, нарушающие ограничение уникальности.

    • OFF
      Если в уникальный индекс вставляются повторяющиеся значения ключа, выводится сообщение об ошибке. Будет выполнен откат всей операции INSERT.

    IGNORE_DUP_KEY нельзя установить в значение ON для индексов, создаваемых для представлений, неуникальных индексов, XML-индексов, пространственных индексов и фильтруемых индексов.

    Для просмотра значения IGNORE_DUP_KEY используйте sys.indexes.

    Для обратной совместимости синтаксиса аргумент WITH IGNORE_DUP_KEY эквивалентен аргументу WITH IGNORE_DUP_KEY = ON.

  • STATISTICS_NORECOMPUTE = { ON | OFF }
    Указывает, пересчитаны ли статистики. Значение по умолчанию — OFF.

    • ON
      Устаревшие статистики не пересчитываются автоматически.

    • OFF
      Автоматическое обновление статистических данных включено.

  • ALLOW_ROW_LOCKS = { ON | OFF }
    Указывает, разрешена ли блокировка строк. Значение по умолчанию — ON.

    • ON
      Блокировки строк допустимы при доступе к индексу. Необходимость в блокировке строк определяет компонент Database Engine.

    • OFF
      Блокировки строк не используются.

  • ALLOW_PAGE_LOCKS = { ON | OFF }
    Указывает, разрешена ли блокировка страниц. Значение по умолчанию — ON.

    • ON
      Блокировки страниц возможны при доступе к индексу. Необходимость в блокировке строк определяет компонент Database Engine.

    • OFF
      Блокировки страниц не используются.

  • SORT_IN_TEMPDB = { ON | OFF }
    Указывает, сохраняются ли результаты сортировки в tempdb. Значение по умолчанию — OFF.

    • ON
      Промежуточные результаты сортировки, которые используются при индексировании, хранятся в базе данных tempdb. Это может уменьшить время, необходимое для создания индекса, если база данных tempdb и база данных пользователя находятся на разных наборах дисков. Однако это увеличивает использование места на диске, которое используется при индексировании.

    • OFF
      Промежуточные результаты сортировки хранятся в той же базе данных, где и индекс.

  • ONLINE = { ON | OFF }
    Определяет, будут ли базовые таблицы и связанные индексы доступны для запросов и изменения данных во время операций с индексами. Значение по умолчанию — OFF.

    ПримечаниеПримечание

    Уникальные некластеризованные индексы нельзя создавать в оперативном режиме. К ним относятся индексы, создаваемые из-за ограничений UNIQUE и PRIMARY KEY.

    • ON
      Долгосрочные блокировки таблицы не поддерживаются во время операций с индексами. Во время главной фазы операций с индексами только блокировка с намерением совмещаемого доступа (IS) удерживается в исходной таблице. Это включает запросы или обновления применительно к обрабатываемой базовой таблице и индексам. В начале операции совмещаемая блокировка (S) удерживается на объекте источника в течение очень короткого времени. В конце операции на источнике на короткое время удерживается совмещаемая блокировка (S), если создается некластеризованный индекс. Если в оперативном режиме создается или удаляется кластеризованный индекс и, если перестраивается кластеризованный или некластеризованный индекс, удерживается блокировка SCH-M (изменения схемы). При создании индекса для временной локальной таблицы параметр ONLINE не может принимать значение ON.

    • OFF
      Блокировки таблиц применяются во время выполнения операций с индексами. Блокировку изменения схемы (Sch-M) в таблице получает автономная операция с индексами, которая создает, перестраивает или удаляет кластеризованный индекс либо перестраивает или удаляет некластеризованный индекс. Это предотвращает доступ к базовой таблице всех пользователей во время операции. Автономная операция с индексами, создающая некластеризованный индекс, получает совмещаемую блокировку (S) в таблице. Это запрещает проводить обновления базовой таблицы, но разрешает проводить операции чтения, например инструкции SELECT.

    Дополнительные сведения см. в разделе О фоновых операциях с индексом. Дополнительные сведения о блокировке см. в разделе Режимы блокировки.

    ПримечаниеПримечание

    Фоновые операции с индексами доступны только в выпусках SQL Server Enterprise, Developer и Evaluation.

  • MAXDOP **=**max_degree_of_parallelism
    Переопределяет параметр конфигурации максимальная степень параллелизма на время операций с индексами. Дополнительные сведения см. в разделе Параметр max degree of parallelism. MAXDOP можно использовать для ограничения числа процессоров, используемых в одновременном выполнении планов. Максимальное число процессоров — 64.

    Аргумент max_degree_of_parallelism может иметь следующие значения.

    • 1
      Подавляет формирование параллельных планов.

    • >1
      Ограничивает указанным значением максимальное число процессоров, используемых для параллельных операций с индексами.

    • 0 (по умолчанию)
      В зависимости от текущей рабочей нагрузки системы использует реальное или меньшее число процессоров.

    Дополнительные сведения см. в разделе Настройка параллельных операций с индексами.

    ПримечаниеПримечание

    Параллельные операции с индексами доступны только в выпусках SQL Server Enterprise, Developer и Evaluation.

  • DATA_COMPRESSION
    Задает режим сжатия данных для указанной таблицы, номера секции или диапазона секций. Ниже приведены доступные параметры.

    • NONE
      Таблица или указанные секции не сжимаются.

    • ROW
      Таблицы или указанные секции сжимаются, используя сжатие строк.

    • PAGE
      Таблицы или указанные секции сжимаются, используя сжатие страниц.

    Дополнительные сведения о сжатии см. в разделе Создание сжатых таблиц и индексов.

  • ON PARTITIONS ( { <выражение_номера_секции> | <диапазон> } [ ,...n ] )
    Указывает секции, к которым применяется параметр DATA_COMPRESSION. Если таблица не секционирована, аргумент ON PARTITIONS приведет к формированию ошибки. Если не указано предложение ON PARTITIONS, параметр DATA_COMPRESSION применяется ко всем секциям секционированной таблицы.

    <Выражение_номера_секции> можно указать одним из следующих способов.

    • Указав номер секции, например: ON PARTITIONS (2).

    • Указав номера нескольких секций, разделив их запятыми, например ON PARTITIONS (1, 5).

    • Указав диапазоны секций и отдельные секции, например: ON PARTITIONS (2, 4, 6 TO 8).

    <Диапазон> можно указать номерами секций, разделенными ключевым словом TO, например: ON PARTITIONS (6 TO 8).

    Чтобы для разных секций задать разные типы сжатия данных, укажите параметр DATA_COMPRESSION несколько раз, например следующим образом.

    REBUILD WITH 
    (
    DATA_COMPRESSION = NONE ON PARTITIONS (1), 
    DATA_COMPRESSION = ROW ON PARTITIONS (2, 4, 6 TO 8), 
    DATA_COMPRESSION = PAGE ON PARTITIONS (3, 5)
    )
    
  • <single_partition_rebuild__option>
    В большинстве случаев при перестроении индекса перестраиваются все секции секционированного индекса. Следующие параметры при применении к одному разделу не перестраивают все секции.

    • SORT_IN_TEMPDB

    • MAXDOP

    • DATA_COMPRESSION

Замечания

Полное описание параметров индекса приведено в разделе CREATE INDEX (Transact-SQL).