Разница в объявлении индекса между указанием столбцов в предложении ON и в предложении INCLUDE - PullRequest
0 голосов
/ 19 февраля 2020

Просто интересно об индексах. Для меня это совершенно новая концепция, и я не вижу разницы между объявлением столбцов в предложении ON и в предложении INCLUDE. Приведенные ниже примеры должны объяснить суть:

CREATE INDEX ix_client_info1
ON dbo.client(name, age, city)
WHERE name = 'A%';

CREATE INDEX ix_client_info2
ON dbo.client(name)
INCLUDE(age, city)
WHERE name = 'A%';

Как эти два индекса отличаются по поведению? Что использовать в каких ситуациях?

1 Ответ

1 голос
/ 19 февраля 2020

Разница в том, что included столбцы не упорядочены в индексе; они не принадлежат дереву индексов, они просто добавляются к листам.

Так что это в основном означает две вещи:

  • индекс немного меньше, и для его обслуживания требуется меньше накладных расходов

  • индекс не поможет, если для фильтрации используются включенные столбцы (как в предложении where, предложении on объединения или в предложении group by) или для сортировки (как в предложении order by); это полезно, только когда столбцы используются исключительно в предложении select, так что это удобно, если вы хотите , охватывающий index)

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

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