index_option (Transact-SQL)
Определяет набор параметров, которые могут применятся к индексу, являющемуся частью определения ограничения, созданному при помощи инструкции ALTER TABLE.
Синтаксис
{
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