Установка параметров индекса

При проектировании, создании или изменении индекса следует учитывать несколько параметров индекса. Эти параметры можно указывать при создании или перестроении индекса. Кроме того, некоторые параметры индекса можно установить в любое время с помощью предложения SET инструкции ALTER INDEX.

Параметр индекса

Описание

Сохранение установки в метаданных

См. также

PAD_INDEX

Устанавливает процентную долю свободного пространства в страницах промежуточного уровня во время создания индекса.

Да

Коэффициент заполнения

FILLFACTOR

Устанавливает процентную долю свободного пространства на конечном уровне каждой страницы индекса во время создания индекса.

Да

Коэффициент заполнения

SORT_IN_TEMPDB

Определяет место хранения промежуточных результатов сортировки, формируемых во время создания индекса.

При значении ON результаты сортировки хранятся в базе данных tempdb. При значении OFF результаты сортировки хранятся в схеме секционирования или файловой группе, в которой хранится результирующий индекс.

ms188677.note(ru-ru,SQL.90).gifПримечание.

Если не требуется проводить сортировку или сортировка может быть выполнена в памяти, параметр SORT_IN_TEMPDB не учитывается.

Нет

База данных tempdb и создание индекса

IGNORE_DUP_KEY

Указывает реакцию на ошибку, вызванную дублированием значений ключа в многострочной транзакции INSERT в уникальном кластеризованном или уникальном некластеризованном индексе.

Да

CREATE INDEX

STATISTICS_NORECOMPUTE

Указывает, следует ли автоматически выполнять перерасчет устаревшей статистики индексов.

Да

Статистика индексов

DROP_EXISTING

Указывает, что существующий индекс должен быть удален и создан заново.

Нет

Реорганизация и перестроение индексов

ONLINE

Определяет, разрешен ли параллельный доступ пользователей к данным базовой таблицы или кластеризованного индекса, а также к любым связанным с ними некластеризованным индексам во время операций над индексом.

ms188677.note(ru-ru,SQL.90).gifПримечание.

Операции с индексом в оперативном режиме доступны только в Microsoft SQL Server 2005 Enterprise Edition.

Нет

Выполнение операций над индексом в оперативном режиме.

ALLOW_ROW_LOCKS

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

Да

CREATE INDEX

ALLOW_PAGE_LOCKS

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

Да

CREATE INDEX

MAXDOP

Устанавливает максимальное число процессоров, которые могут быть использованы обработчиком запросов для выполнения одной инструкции индекса. Число задействованных процессоров может быть меньше в зависимости от текущей рабочей нагрузки системы.

ms188677.note(ru-ru,SQL.90).gifПримечание.

Параллельные операции над индексом доступны только в SQL Server 2005 Enterprise Edition.

Нет

Настройка параллельных индексных операций

Установка параметров индекса

ALTER INDEX (Transact-SQL)

Установка параметров без перестроения

С помощью предложения SET в инструкции ALTER INDEX можно установить следующие параметры индекса, не перестраивая индекс:

  • ALLOW_PAGE_LOCKS
  • ALLOW_ROW_LOCKS
  • IGNORE_DUP_KEY
  • STATISTICS_NORECOMPUTE

Эти параметры применяются к индексу немедленно. Другие параметры индекса, например FILLFACTOR и ONLINE, могут быть указаны только при создании или перестроении индекса.

Просмотр настроек параметров индекса

Не все значения параметров индекса хранятся в метаданных. Те значения, которые хранятся в метаданных, можно просмотреть в соответствующих представлениях каталога. Чтобы проверить текущие значения параметров существующих индексов, используйте представление каталога sys.indexes. Чтобы проверить текущее значение для параметра STATISTICS_NORECOMPUTE, используйте представление каталога sys.stats. Дополнительные сведения см. в разделе Просмотр сведений об индексах.

Примеры

В следующем примере устанавливаются значения параметров ALLOW_ROW_LOCKS и IGNORE_DUP_KEY для индекса AK_Product_ProductNumber таблицы Production.Product.

USE AdventureWorks;
GO
--Verify the current values for these options.
SELECT allow_row_locks, ignore_dup_key
FROM sys.indexes 
WHERE name = N'AK_Product_ProductNumber';
GO
--Set the ALLOW_ROW_LOCKS option OFF and the IGNORE_DUP_KEY option ON.
ALTER INDEX AK_Product_ProductNumber       
ON Production.Product       
SET (ALLOW_ROW_LOCKS = OFF, IGNORE_DUP_KEY = ON);
GO
--Verify the new values for these options.
SELECT allow_row_locks, ignore_dup_key
FROM sys.indexes 
WHERE name = N'AK_Product_ProductNumber';
GO

См. также

Основные понятия

Изменение индексов

Другие ресурсы

sys.indexes (Transact-SQL)
sys.stats (Transact-SQL)

Справка и поддержка

Получение помощи по SQL Server 2005