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

Когда вы создаёте составной индекс, рассматривайте следующие факты и рекомендации:

*  Вы можете объединять до 16 колонок в составной индекс. Сумма длины всех колонок составного индекса не может превышать 900 байт.

*  Все колонки в составном индексе должны быть из одной таблицы, исключая ситуации, когда индекс создаётся на просмотрщик.

*  Объявляйте сначала уникальные колонки. Первые колонки, описанные в операторе CREATE INDEX, имеют высший приоритет при сортировке.

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

*  Индекс на колонки (column1, column2) это не то же самое, что (column2, column1). Эти индексы имеют разный порядок.

*  Используйте составной индекс для повышения производительности запросов и уменьшения количества индексов на таблицу.

Следующий пример создаёт не кластерный составной индекс. Обратите внимание, что колонка OrderID описывается первой, потому что он более избирательный:

USE Northwind

CREATE UNIQUE NONCLUSTERED INDEX U_OrdID_ProdID

ON [Order Details] (OrderID, ProductID)

Получение информации о существующем индексе

Вам может потребоваться получение информации о существующем индексе, прежде чем вы создадите, измените или удалите индекс. Вы можете использовать встроенную процедуру sp_helpindex для получения такой информации как имя индекса, тип и опции для определённой таблицы.

Для примера, следующий пример отображает индексы таблицы Customers:

USE Northwind

EXEC sp_helpindex Customers

Результат:

index_name     index_description                                   index_keys

---------------------------------------------------------------------------City           nonclustered located on PRIMARY                     City

CompanyName    nonclustered located on PRIMARY                     CompanyName

PK_Customers   clustered, unique, primary key located on PRIMARY   CustomerID

PostalCode     nonclustered located on PRIMARY                     PostalCode

Region         nonclustered located on PRIMARY                     Region

7.2 Создание опций индекса

Сервер SQL предлагает опции, которые могут ускорить создание индекса, а также увеличить производительность индексов.

Использование опции FILLFACTOR

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

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

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

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

*  Использовать маленький процент свободного пространства для процесса онлайновых транзакций (OLTP).

*  Используйте большое значение FILLFACTOR для окружения SQL Server Analysis Services.

Когда вы используете значение FILLFACTOR, рассматривайте следующие факты и рекомендации:

*  Значения этой опции изменяются от 1 до 100.

*  Значение по умолчанию – 0. Это означает, что страница заполняется до 100 процентов. Вы не можете напрямую указать значение 0.

*  Вы можете изменить это значение с помощью встроенной процедуры sp_configure.

*  Значение FILLFACTOR указывается в процентах.

*  Используйте опцию FILLFACTOR для таблиц, в которые часто вставляются данные, или где часто изменяется индексное значение.

Использование опции PAD_INDEX

Опция PAD_INDEX указывает процент, до которого заполняется не листовые индексные страницы. Вы можете использовать PAD_INDEX опцию только тогда, когда указана опция FILLFACTOR, потому что процентное значение PAD_INDEX зависит от процента, указанного в FILLFACTOR.