powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Вопросы по IT / Вопрос про составной индекс в MS SQL
5 сообщений из 5, страница 1 из 1
Вопрос про составной индекс в MS SQL
    #800451
Stable
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вроде бы знаю ответ, но хочу убедиться, что я прав.
Есть составной индекс по 4 полям: f1, f2, f3, f4.
Правильно ли я понимаю, что:
1. Данный индекс будет использоваться, если я например буду делать запрос только по трем левым полям: where f1='1' and f2='2' and f3='3'?
Т. е. не важно сколько полей из этого индекса я буду использовать в запросе, главное, чтобы они шли слева направо?
2. Порядок полей в запросе важен? Если будет where f4='4' and f3='3' and f2='2' and f1='1' индекс использоваться не будет?
...
Изменено: 12.12.2018, 18:10 - Stable
Рейтинг: 0 / 0
Вопрос про составной индекс в MS SQL
    #800462
kDn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
g?oes to sleep
Stable,

1. да
2. нет (будет)
...
Дилинь Дилинь Дилинь 798413147632722479082280201[:frown][:grin2]
Рейтинг: 0 / 0
Вопрос про составной индекс в MS SQL
    #800491
Stable
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kDn,

Ок, спс. Значит я просто запутался со вторым пунктом.
Меня смутила ситуация, когда создано два составных индекса с одними и теми же полями, но в разной последовательности.
Я так понимаю это сделано чтобы можно было искать по части полей слева.
...
Рейтинг: 0 / 0
Вопрос про составной индекс в MS SQL
    #801375
Конякула
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей]
Шут - адвокат разума
Stable  12.12.2018, 18:22
kDn,

Ок, спс. Значит я просто запутался со вторым пунктом.
Меня смутила ситуация, когда создано два составных индекса с одними и теми же полями, но в разной последовательности.
Я так понимаю это сделано чтобы можно было искать по части полей слева.
Я в MS SQL не силен, но в Oracle последовательность полей в запросе не имеет ни какого значения для использования индекса. Если поля из индекса используются, то индекс используется, если конечно более подходящего индекса нет. А в твоем случае два одинаковых индекса сделаны скорее всего случайно. Программист не посмотрел, что такой индекс уже есть и сделал ещё один.
...
Рейтинг: 0 / 0
Вопрос про составной индекс в MS SQL
    #801625
kDn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
g?oes to sleep
Stable  12.12.2018, 18:22
Я так понимаю это сделано чтобы можно было искать по части полей слева.
Да, если индекс покрывающий то возьмет все с него. Т.е. для примера в предикатах f1, f2, f5 - будет seek + look-up за f5. Для f2, f3, f5 - может даже взять этот индекс, но будет scan, а не seek, либо же возьмет что-то более подходящее. Проще всего - поглядеть план, там все будет видно.
...
Дилинь Дилинь Дилинь 798413147632722479082280201[:frown][:grin2]
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Вопросы по IT / Вопрос про составной индекс в MS SQL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]