Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 составной индекс vs индекс с include  [new]
индексы, такие индексы
Guest
Когда составной индекс:
create index [IX1] on T (col2, col3) 
предпочтительнее индекса по одному полю с include:
create index [IX2] on T (col2) include(col3)
? И, наоборот, когда второй предпочтительнее первого?
13 сен 13, 14:31    [14836969]     Ответить | Цитировать Сообщить модератору
 Re: составной индекс vs индекс с include  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
насколько я понимаю, все зависит от того что у вас в WHERE запихано
если проверка по всем полям (col2, col3), тогда составной
если проверка по одному полю , а второе только в селекте, тогда второй
13 сен 13, 14:44    [14837061]     Ответить | Цитировать Сообщить модератору
 Re: составной индекс vs индекс с include  [new]
Гость333
Member

Откуда:
Сообщений: 3683
индексы, такие индексы
Когда составной индекс:
create index [IX1] on T (col2, col3) 
предпочтительнее индекса по одному полю с include:
create index [IX2] on T (col2) include(col3)

Когда предикат по col3 является sargable.
Естественно, в предположении, что предикат по col2 тоже sargable.
13 сен 13, 14:45    [14837070]     Ответить | Цитировать Сообщить модератору
 Re: составной индекс vs индекс с include  [new]
индексы, такие индексы
Guest
Гость333
индексы, такие индексы
Когда составной индекс:
create index [IX1] on T (col2, col3) 
предпочтительнее индекса по одному полю с include:
create index [IX2] on T (col2) include(col3)

Когда предикат по col3 является sargable.
Естественно, в предположении, что предикат по col2 тоже sargable.
1. Можете ссылочку привести на ислледования?
2. Тогда получается правило: забудь про индексы с include, а делай только составные, следи только, чтобы предикаты были sargable. Нет? Есть ситуации, когда без non sargable ну просто никак?
13 сен 13, 15:18    [14837245]     Ответить | Цитировать Сообщить модератору
 Re: составной индекс vs индекс с include  [new]
индексы, такие индексы
Guest
HandKot
насколько я понимаю, все зависит от того что у вас в WHERE запихано
если проверка по всем полям (col2, col3), тогда составной
если проверка по одному полю , а второе только в селекте, тогда второй
да, похоже что так
13 сен 13, 15:20    [14837259]     Ответить | Цитировать Сообщить модератору
 Re: составной индекс vs индекс с include  [new]
stream aggregate
Guest
так же 1-й индекс предпочтительнее при запросах типа

select col2, col3, count(*)
from T
group by col2, col3


и

select col3, count(*)
from T
where col2 = ...
group by col3
13 сен 13, 16:02    [14837534]     Ответить | Цитировать Сообщить модератору
 Re: составной индекс vs индекс с include  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
индексы, такие индексы
Гость333
пропущено...

Когда предикат по col3 является sargable.
Естественно, в предположении, что предикат по col2 тоже sargable.
2. Тогда получается правило: забудь про индексы с include, а делай только составные, следи только, чтобы предикаты были sargable
Вообще то индексы создаются под запросы, а не запросы под индексы.

Индексы с include могут быть полезны при создании универсальных индексов. Потому как для индексируемых полей порядок важен, для include нет. При условии, что индексированные поля уже дают достаточную селективность, все остальные поля уходят в include, позволяя тем самым покрыть больше запросов меньшим количеством индексов.
13 сен 13, 20:20    [14838352]     Ответить | Цитировать Сообщить модератору
 Re: составной индекс vs индекс с include  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
я бы сказал, что в большинстве типовых задач между покрывающим индексом и индексом со включаемыми колонками разницы особой нет.
Да, индекс со включаемыми колонками можно сделать шире (но надо ли? Ну, иногда надо, не спорю)
Да, индекс со включаемыми колонками можно одновременно сделать и покрывающим, и уникальным

Однако я бы не стал рассматривать обычный покрывающий индекс как "пережиток эпохи и морально устаревшее", а индекс с покрывающими колонками - как серебряную пулю - решатель проблем.
13 сен 13, 21:03    [14838423]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить