Что делает функция INCLUDE () при создании индекса в MS SQL Server? - PullRequest
0 голосов
/ 23 января 2020

В чем разница между созданием индекса с использованием INCLUDE функции против нет?

Какая разница между следующими двумя индексами?

CREATE NONCLUSTERED INDEX SomeName ON SomeTable (
    ColumnA
    ,ColumnB
    ,ColumnC
    ,ColumnD
    ) INCLUDE (
    ColumnE
    ,ColumnF
    ,ColumnG
    )

против

CREATE INDEX SomeName ON SomeTable (
    ColumnA
    ,ColumnB
    ,ColumnC
    ,ColumnD
    ,ColumnE
    ,ColumnF
    ,ColumnG
    )

Ответы [ 2 ]

1 голос
/ 23 января 2020

Предложение INCLUDE добавляет данные на самом низком уровне / уровне листьев, а не в дереве индексов. Это делает индекс меньше, потому что он не является частью дерева.

INCLUDE столбцы не являются ключевыми столбцами в индексе, поэтому они не упорядочены. Это означает, что это не очень полезно для предикатов, сортировка и т. Д. c. Однако, это может быть полезно, если у вас есть остаточный поиск в нескольких строках из ключевых столбцов.

INCLUDE столбцы не являются ключевыми столбцами в индексе, поэтому они не упорядочены. Это делает их, как правило, бесполезными для соединения или сортировки. И поскольку они не являются ключевыми столбцами, они не располагаются во всей структуре B-дерева, как ключевые столбцы

Добавляя столбцы типа «Включить» (или неключевые), вы можете создавать некластеризованные индексы, которые охватывают больше запросов. Это связано с тем, что неключевые столбцы имеют следующие преимущества:

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

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

Для получения дополнительной информации см. Документы Microsoft: Создание индексов с включенными столбцами

1 голос
/ 23 января 2020

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

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

* 1005 Ключевое слово * позволяет указывать значения столбцов в индексе без дополнительных затрат на дополнительную структуру индексации. Цель состоит в том, чтобы разрешать запросы без необходимости поиска информации о столбцах на исходных страницах данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...