В каком из вариантов индекс ускорит поиск?

Есть некоторая таблица:

create table Table1
(
  [a] int,
  [b] int,
  [c] int
)

И так же есть некоторый индекс Index1, в котором указаны поля a, b.

В каком из запросов индекс сработает?

  1. select * from Table1 where a = 1
  2. select * from Table1 where b = 1
  3. select * from Table1 where c = 1
  4. select * from Table1 where a = 1 and b = 1
  5. select * from Table1 where b = 1 and c = 1

Я не разбираюсь в индексах, но мне кажется варианты 1, 2, 4 являются верными и индекс ускорит поиск, ведь там используются поля с индексом, однако постановка задачи такова, что вариант только один (в каком из запросов). Помогите пожалуйста!


Ответы (1 шт):

Автор решения: Виталий Злобин

Если поля в индексе идут так как у условии(a, b), то запросы 1 и 4 ускорятся. Если порядок (b, a), то 2 и 5 ускорятся.


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

→ Ссылка