Стоит ли вообще индекс из нескольких столбцов, если во втором столбце всегда будет только несколько записей для каждой записи в первом столбце? - PullRequest
0 голосов
/ 14 сентября 2018

Если у меня есть два столбца в таблице, и я планирую выполнить много запросов по этим двум столбцам (что обычно предполагает создание многостолбцового индекса), но я также знаю, что каждое уникальное значение в первом столбце будетво втором столбце только от 3 до 5 значений, стоит ли индекс по нескольким столбцам по сравнению с наличием индекса по первому столбцу?Предположим, меня не волнует стоимость создания индекса, меня очень интересует, в какой степени индекс из нескольких столбцов увеличит скорость запроса по сравнению с индексом только для первого столбца.

1 Ответ

0 голосов
/ 14 сентября 2018

Вопрос заключается в том, может ли многостолбцовый индекс покрывать запрос или хотя бы предложение where (при условии, что ваши запросы относятся к фильтрации в предложении where).

В общем, ответ - да. Рассмотрим данные, которые выглядят так:

x     y       datapage
a     1       datapage_1
a     2       datapage_2
a     3       datapage_3
b     1       datapage_4
. . . 

Если ваш запрос:

select x, y
from t
where x = 'a' and y = 2;

Затем, без индекса, база данных должна сканировать все страницы данных, чтобы найти соответствующие строки.

С индексом только на x база данных может найти все значения "a", но ей все равно нужно загрузить три страницы данных, чтобы получить значения y.

С индексом как x, так и y база данных может напрямую перейти к "datapage_2".

...