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

0

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

Теги:
rdbms

1 ответ

2
Лучший ответ

Проблема заключается в том, может ли индекс нескольких столбцов охватывать запрос или, по крайней мере, предложение 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".

  • 0
    Спасибо за ответ. Я должен был быть более ясным в вопросе: я предполагаю, что альтернативой многостолбцовому индексу является просто наличие индекса в первом столбце. Я понимаю, что наличие многостолбцового индекса означает, что база данных может идти прямо к правильной строке, но мне интересно знать, в какой мере это будет полезно. Другими словами, отличается ли предельная выгода от наличия индекса для таблицы, которая имеет только 5 строк? А если нет, то в какой степени индекс для таблицы с 5 строками быстрее, чем без индекса?
  • 0
    «В какой степени индекс для таблицы с 5 строками быстрее, чем без индекса?» MySQL, вероятно, даже не будет использовать индекс для таблицы, в которой всего 5 строк. @NathanWailes .. Кроме того, сложно объяснить, как работает оптимизатор MySQL.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню