Какова цель PAD_INDEX в этом ограничении SQL Server?
У меня есть следующее ограничение, применяемое к одной из моих таблиц, но я не знаю, что означает PAD_INDEX.
Может кто-нибудь просветить меня?
CONSTRAINT [PK_Employees] PRIMARY KEY CLUSTERED
(
[EmployeeId] ASC
) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
^--------------^
this part here
Ответы
Ответ 1
Индекс в SQL Server является B-Tree
Это означает, что PAD_INDEX полезен только при установке FILLFACTOR. FILLFACTOR определяет, сколько свободного места на странице данных (примерно)
Изображение из MSDN:
![B-Tree structure]()
Ответ 2
В принципе, вы устанавливаете PAD_INDEX = ON, если вы ожидаете много случайных изменений в индексе регулярно.
Это помогает избежать разделения страниц индекса.
Я установил его, когда ожидаю, что 30% + случайных записей, включенных в индекс, будут удаляться на регулярной основе.
Ответ 3
От MSDN:
PAD_INDEX = {ON | ВЫКЛ}
Задает заполнение индекса. Значение по умолчанию OFF.
ON:
Процент свободного пространства, заданного fillfactor, применяется к страницам промежуточного уровня индекса.
OFF или fillfactor не указан:
Страницы промежуточного уровня заполняются до почти полной емкости, оставляя достаточное пространство для хотя бы одной строки максимального размера, который может иметь индекс, учитывая набор ключей на промежуточных страницах.
Параметр PAD_INDEX полезен только при указании FILLFACTOR, поскольку PAD_INDEX использует процент, указанный FILLFACTOR. Если процент, указанный для FILLFACTOR, недостаточно велик, чтобы разрешить одну строку, Database Engine внутренне переопределяет процент, чтобы обеспечить минимум. Количество строк на промежуточной странице индекса не меньше двух, независимо от того, насколько низко значение fillfactor.
В обратном совместимом синтаксисе WITH PAD_INDEX эквивалентен WITH PAD_INDEX = ON.