Создание индексов с включенными столбцами

В этом разделе описывается добавление включенных (или неключевых) столбцов для расширения функциональности некластеризованных индексов в SQL Server 2014 с помощью SQL Server Management Studio или Transact-SQL. Добавление неключевых столбцов позволяет создавать некластеризованные индексы, покрывающие больше запросов. Это обусловлено следующими преимуществами неключевых столбцов.

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

  • Они не учитываются компонентом Компонент Database Engine при расчете числа ключевых столбцов индекса и размера ключа индекса.

Индекс с неключевыми столбцами может значительно повысить производительность запроса, когда все столбцы запроса включены в индекс как ключевые или неключевые. Производительность повышается благодаря тому, что оптимизатор запросов может найти все значения столбцов в этом индексе; при этом нет обращения к данным таблиц или кластеризованных индексов, что приводит к меньшему количеству дисковых операций ввода-вывода.

Примечание

Если индекс содержит все столбцы, на которых в запросе имеются ссылки, это обычно называется покрытием запроса.

В этом разделе

Перед началом

Рекомендации по проектированию

  • Переопределите некластеризованные индексы с большим размером ключа индекса, чтобы только столбцы, используемые для поиска и уточняющего запроса, были ключевыми. Все остальные столбцы, покрывающие запрос, сделайте неключевыми столбцами. Таким образом, в наличии будут все столбцы, покрывающие запрос, но сам ключ индекса будет небольшим и эффективным.

  • Включите неключевые столбцы в некластеризованный индекс, чтобы избежать превышения текущих ограничений на размер индекса (16 ключевых столбцов) и размер ключа индекса (900 байт). Компонент Компонент Database Engine не учитывает неключевые столбцы при расчете количества ключевых столбцов индекса и размера ключа индекса.

Ограничения

  • Неключевые столбцы можно задавать только для некластеризованных индексов.

  • Все типы данных, за исключением text, ntext, и image могут использоваться как неключевые столбцы.

  • Вычисляемые столбцы, являющиеся детерминированными, в том числе точными или неточными, могут быть неключевыми столбцами. Дополнительные сведения см. в разделе Индексы вычисляемых столбцов.

  • Вычисляемые столбцы, полученные на основе типов данных image, ntext и text, могут быть неключевыми столбцами, если тип данных этого вычисляемого столбца допустим в качестве неключевого индексного столбца.

  • Неключевые столбцы можно удалить из таблицы только после удаления из этой таблицы индекса.

  • Неключевые столбцы нельзя изменять, за исключением следующих операций:

    • изменение поведения столбца в отношении значения NULL с NOT NULL на NULL;

    • Увеличение длины столбцов типов varchar, nvarchar и varbinary.

Безопасность

Разрешения

Необходимо разрешение ALTER для таблицы или представления. Пользователь должен быть членом предопределенной роли сервера sysadmin или предопределенных ролей базы данных db_ddladmin и db_owner.

Использование среды SQL Server Management Studio

Создание индекса с неключевыми столбцами

  1. В обозревателе объектов щелкните знак «плюс», чтобы развернуть базу данных, содержащую таблицу, в которой необходимо создать индекс с неключевыми столбцами.

  2. Чтобы развернуть папку Таблицы , щелкните значок «плюс».

  3. Щелкните знак «плюс», чтобы развернуть таблицу, в которой необходимо создать индекс с неключевыми столбцами.

  4. Щелкните правой кнопкой мыши папку Индексы, выберите Создать индекс и Некластеризованный индекс...

  5. В диалоговом окне Создание индекса на странице Общие введите имя нового индекса в поле Имя индекса .

  6. На вкладке Ключевые столбцы индекса нажмите кнопку Добавить… .

  7. В диалоговом окне Выбор столбцов изtable_name выберите поле проверка или проверка столбцов таблицы для добавления в индекс.

  8. Нажмите кнопку ОК.

  9. На вкладке Включенные столбцы нажмите кнопку Добавить… .

  10. В диалоговом окне Выбор столбцов изtable_name выберите поле проверка или проверка столбцы таблицы, добавляемые в индекс как неключевые столбцы.

  11. Нажмите кнопку ОК.

  12. В диалоговом окне Создание индекса нажмите кнопку ОК.

Использование Transact-SQL

Создание индекса с неключевыми столбцами

  1. В обозревателе объектовподключитесь к экземпляру компонента Компонент Database Engine.

  2. На стандартной панели выберите пункт Создать запрос.

  3. Скопируйте следующий пример в окно запроса и нажмите кнопку Выполнить.

    USE AdventureWorks2012;  
    GO  
    -- Creates a nonclustered index on the Person.Address table with four included (nonkey) columns.   
    -- index key column is PostalCode and the nonkey columns are  
    -- AddressLine1, AddressLine2, City, and StateProvinceID.  
    CREATE NONCLUSTERED INDEX IX_Address_PostalCode  
    ON Person.Address (PostalCode)  
    INCLUDE (AddressLine1, AddressLine2, City, StateProvinceID);  
    GO  
    

Дополнительные сведения см. в статье CREATE INDEX (Transact-SQL).