index_option (Transact-SQL)
Определяет набор параметров, которые могут применятся к индексу, являющемуся частью определения ограничения, созданному при помощи инструкции ALTER TABLE.
Применимо для следующих объектов: SQL Server (SQL Server 2008 по текущую версию), База данных SQL Windows Azure (С первоначального выпуска по текущий выпуск). |
Синтаксические обозначения в 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 | COLUMNSTORE | COLUMNSTORE_ARCHIVE }
[ ON PARTITIONS ( { <partition_number_expression> | <range> }
[ , ...n ] ) ]
| ONLINE = { ON [ ( <low_priority_lock_wait> ) ] | OFF }
}
<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 | COLUMNSTORE | COLUMNSTORE_ARCHIVE } }
| ONLINE = { ON [ ( <low_priority_lock_wait> ) ] | OFF }
}
<low_priority_lock_wait>::=
{
WAIT_AT_LOW_PRIORITY ( MAX_DURATION = <time> [ MINUTES ] ,
ABORT_AFTER_WAIT = { NONE | SELF | BLOCKERS } )
}
Аргументы
PAD_INDEX = { ON | OFF }
Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.
Определяет разреженность индекса. Значение по умолчанию — OFF.
ON
Процент свободного места, определяемый параметром FILLFACTOR, применяется к страницам индекса промежуточного уровня.OFF или fillfactor не указан
Страницы промежуточного уровня заполнены почти в соответствии их производительным возможностям, на них остается место как минимум для одной строки максимального размера, какой только может иметь индекс, с заданным набором ключей на промежуточных страницах.
FILLFACTOR **=**fillfactor
Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.
Определяет величину в процентах, показывающую насколько должен компонент Компонент 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 }
Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.
Указывает, разрешена ли блокировка строк. Значение по умолчанию — ON.
ON
Блокировки строк допустимы при доступе к индексу. Компонент Компонент Database Engine определяет, когда используются блокировки строки.OFF
Блокировки строк не используются.
ALLOW_PAGE_LOCKS = { ON | OFF }
Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.
Указывает, разрешена ли блокировка страниц. Значение по умолчанию — ON.
ON
Блокировки страниц возможны при доступе к индексу. Необходимость в блокировке строк определяет компонент Компонент Database Engine.OFF
Блокировки страниц не используются.
SORT_IN_TEMPDB = { ON | OFF }
Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.
Указывает, сохраняются ли результаты сортировки в tempdb. Значение по умолчанию — OFF.
ON
Промежуточные результаты сортировки, которые используются при индексировании, хранятся в базе данных tempdb. Это может уменьшить время, необходимое для создания индекса, если база данных tempdb и база данных пользователя находятся на разных наборах дисков. Однако это увеличивает использование места на диске, которое используется при индексировании.OFF
Промежуточные результаты сортировки хранятся в той же базе данных, где и индекс.
ONLINE = { ON | OFF }
Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.
Определяет, будут ли базовые таблицы и связанные индексы доступны для запросов и изменения данных во время операций с индексами. Значение по умолчанию — OFF. REBUILD может выполняться как операция в режиме ONLINE.
Примечание
Уникальные некластеризованные индексы нельзя создавать в режиме в сети.К ним относятся индексы, создаваемые из-за ограничений UNIQUE и PRIMARY KEY.
ON
Долгосрочные блокировки таблицы не поддерживаются во время операций с индексами. Во время главной фазы операций с индексами только блокировка с намерением совмещаемого доступа (IS) удерживается в исходной таблице. Это включает запросы или обновления применительно к обрабатываемой базовой таблице и индексам. В начале операции совмещаемая блокировка (S) удерживается на исходном объекте в течение очень короткого времени. В конце операции на источнике на короткое время удерживается совмещаемая блокировка (S), если создается некластеризованный индекс. Если в режиме в сети создается или удаляется кластеризованный индекс и, если перестраивается кластеризованный или некластеризованный индекс, удерживается блокировка SCH-M (изменения схемы). Хотя блокировки индекса в сети — это короткие блокировки метаданных, но блокировка изменения схемы (Sch-M) должна ожидать завершения всех блокирующих транзакций для этой таблицы. Во время ожидания Sch-M блокирует все другие транзакции, ожидающие за этой блокировкой доступа к одной таблице. При создании индекса для временной локальной таблицы параметр ONLINE не может принимать значение ON.Примечание
Перестроение индекса в режиме «в сети» может задать параметры low_priority_lock_wait, описанные ниже в этом разделе.low_priority_lock_wait управляет приоритетом блокировки S и Sch-M во время операции перестроения индекса в режиме «в сети».
OFF
Блокировки таблиц применяются во время выполнения операций с индексами. Это предотвращает доступ к базовой таблице всех пользователей во время операции. Блокировку изменения схемы (Sch-M) в таблице получает операция с индексами вне сети, которая создает, перестраивает или удаляет кластеризованный индекс либо перестраивает или удаляет некластеризованный индекс. Это предотвращает доступ к базовой таблице всех пользователей во время операции. Операция с индексами вне сети, создающая некластеризованный индекс, получает совмещаемую блокировку (S) в таблице. Это запрещает проводить обновления базовой таблицы, но разрешает проводить операции чтения, например инструкции SELECT.
Дополнительные сведения см. в разделе Об операциях с индексом в сети.
Примечание
Операции с индексами в сети доступны не во всех выпусках Microsoft SQL Server.Перечень функций, поддерживаемых в разных выпусках SQL Server, см. в разделе Функции, поддерживаемые различными выпусками SQL Server 2014.
MAXDOP **=**max_degree_of_parallelism
Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.
Переопределяет параметр конфигурации max degree of parallelism на время операций с индексами. Дополнительные сведения см. в разделе Настройка параметра конфигурации сервера max degree of parallelism. MAXDOP можно использовать для ограничения числа процессоров, используемых в одновременном выполнении планов. Максимальное число процессоров — 64.
Аргумент max_degree_of_parallelism может иметь следующие значения.
1
Подавляет формирование параллельных планов.>1
Ограничивает указанным значением максимальное число процессоров, используемых для параллельных операций с индексами.0 (по умолчанию)
В зависимости от текущей рабочей нагрузки системы использует реальное или меньшее число процессоров.
Дополнительные сведения см. в разделе Настройка параллельных операций с индексами.
Примечание
Параллельные операции с индексами доступны не во всех выпусках Microsoft SQL Server.Перечень функций, поддерживаемых выпусками SQL Server, см. в разделе Функции, поддерживаемые различными выпусками SQL Server 2014.
DATA_COMPRESSION
Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.
Задает режим сжатия данных для указанной таблицы, номера секции или диапазона секций. Ниже приведены доступные параметры.
NONE
Таблица или указанные секции не сжимаются. Применяется только к таблицам rowstore, не относится к таблицам columnstore.ROW
Таблицы или указанные секции сжимаются, используя сжатие строк. Применяется только к таблицам rowstore, не относится к таблицам columnstore.PAGE
Таблицы или указанные секции сжимаются, используя сжатие страниц. Применяется только к таблицам rowstore, не относится к таблицам columnstore.COLUMNSTORE
Применимо для следующих объектов: С SQL Server 2014 по SQL Server 2014 включительно.
Применяется только к таблицам columnstore. COLUMNSTORE указывает, что должна быть распакована секция, которая была упакована с помощью параметра COLUMNSTORE_ARCHIVE. При восстановлении данных сжатие будет продолжаться с применением сжатия columnstore, предусмотренного для всех таблиц columnstore.
COLUMNSTORE_ARCHIVE
Применимо для следующих объектов: С SQL Server 2014 по SQL Server 2014 включительно.
Применяется только к таблицам columnstore, представляющим собой таблицы, которые хранятся с кластеризованным индексом columnstore. Параметр COLUMNSTORE_ARCHIVE обеспечивает дальнейшее сжатие указанной секции до еще меньшего размера. Это может использоваться для архивации или в других ситуациях, где требуется уменьшение объема пространства и допускается увеличение затрат времени на хранение и извлечение.
Дополнительные сведения о сжатии см. в разделе Сжатие данных.
ON PARTITIONS ( { <partition_number_expression> | <range> } [ ,...n ] )
Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.
Указывает секции, к которым применяется параметр 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 несколько раз, например следующим образом.
--For rowstore tables 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) ) --For columnstore tables REBUILD WITH ( DATA_COMPRESSION = COLUMNSTORE ON PARTITIONS (1, 3, 5), DATA_COMPRESSION = COLUMNSTORE_ARCHIVE ON PARTITIONS (2, 4, 6 TO 8) )
<single_partition_rebuild__option>
В большинстве случаев при перестроении индекса перестраиваются все секции секционированного индекса. Следующие параметры при применении к одному разделу не перестраивают все секции.SORT_IN_TEMPDB
MAXDOP
DATA_COMPRESSION
low_priority_lock_wait
Применимо для следующих объектов: С SQL Server 2014 по SQL Server 2014 включительно.
SWITCH или перестроение индекса в сети завершается, как только не остается блокирующих таблицу операций. Значение WAIT_AT_LOW_PRIORITY указывает, что если операция SWITCH или перестроение индекса в сети не может быть выполнено немедленно, то эти операции будут переведены в режим ожидания. Операция будет удерживать блокировки с низким приоритетом, чтобы другие операции, удерживающие блокировки, конфликтующие с инструкцией DDL, могли выполняться дальше. Пропуск параметра WAIT AT LOW PRIORITY эквивалентен WAIT_AT_LOW_PRIORITY ( MAX_DURATION = 0 minutes, ABORT_AFTER_WAIT = NONE).
MAX_DURATION = time [MINUTES ]
Время ожидания (целочисленное значение, указанное в минутах) при выполнении команды DDL для операции SWITCH или получаемой блокировки по операции перестроения индекса в режиме «в сети». Будет выполнена попытка немедленного запуска операции SWITCH или перестроения индекса в режиме «в сети». Если операция будет заблокирована на время MAX_DURATION, будет выполнено одно из действий ABORT_AFTER_WAIT. Время MAX_DURATION всегда указывается в минутах, и слово MINUTES можно опустить.ABOUT_AFTER_WAIT = [NONE | SELF | BLOCKERS } ]
NONE
Продолжение операции SWITCH или перестроение индекса в сети без изменения приоритета блокировки (с помощью обычного приоритета).SELF
Прекращение операции SWITCH или DDL по перестроению индекса в сети, выполняемой в данный момент, без какого-либо действия.BLOCKERS
Остановка всех пользовательских транзакций, в данный момент блокирующих операцию SWITCH или операцию DDL по перестроению индекса в сети, чтобы можно было продолжить данную операцию.Требуется разрешение ALTER ANY CONNECTION.
Замечания
Полное описание параметров индекса приведено в разделе CREATE INDEX (Transact-SQL).
См. также
Справочник
column_constraint (Transact-SQL)