MySQL - BTree AND Hash-индексы для одного столбца

Я пытался найти похожие вопросы, но не нашел ни одного, кроме вопросов, касающихся двух индексов для одного столбца (в общем).

Предположим, у нас есть таблица с колонкой COL, Таблица (и вся база данных) доступна только для чтения для клиентов (предположим, что она обновляется один раз / раз каждые длительные периоды времени и только бэкэнд-сервисом). Следовательно, время вставки / обновления не имеет значения.

Для этого столбца часто используются запросы, которые ищут строки, в которых COL значение находится в некотором диапазоне, а некоторые наиболее часто используемые запросы, которые ищут строки, где COL сравнивается непосредственно со значением (проверка на равенство).

Выгодно ли, учитывая вышесказанное, проводить как BTREE а также HASH индекс на COL? Будет ли оптимизатор использовать BTREE индекс для запросов диапазона и HASH индекс для запросов прямого сравнения? Изменится ли ответ, если COL имеет тип varchar(256)?

Спасибо!

1 ответ

Решение

Я бы придерживался индекса B-Tree, потому что он вам все равно нужен. Возможно, при использовании хеш-индекса также может быть некоторый прирост производительности, но вы также будете занимать больше памяти.

Более того, хеш-индексы недоступны для самых распространенных механизмов хранения (InnoDB и MyISAM) - Таблица 13.1 в документации.

Другие вопросы по тегам