Skip to main content

Коли Hash-індекси ефективніші?

Hash-індекси ефективніші, коли запити звертаються до даних за точним збігом ключа, а не за діапазонами чи сортуванням.

Ефективні випадки

  1. Пошук за рівністю (=) Наприклад:
sql
SELECT * FROM users WHERE email = 'test@mail.com';

Тут Hash-індекс знайде значення миттєво - обчислить хеш і стрибне прямо до потрібного запису. Це швидше, ніж у B-Tree, де потрібно пройти кілька рівнів дерева (O(log n)). 2. Запити з операторами IN і NOT IN

sql
SELECT * FROM users WHERE id IN (1, 5, 7, 9);

Кожен id шукається напряму за хешем - швидко й незалежно. 3. Таблиці з великим обсягом даних і унікальними ключами Наприклад, пошук за UUID, email, token, session_id - значення розподілені випадково, і хеш-індекс справляється краще, ніж дерево. 4. Висока частота точкових запитів за рідкісних змін структури Hash-індекси добре працюють у системах, де дані читають частіше, ніж змінюють (наприклад, кеш-таблиці, lookup-таблиці в аналітиці, Redis-подібні сценарії).

Неефективні випадки

  • діапазонні умови (>, <, BETWEEN),
  • сортування (ORDER BY),
  • групування (GROUP BY).

Hash-індекс не знає, де «сусідні» значення, тому він не вміє обробляти діапазони й порядок.

Підсумок: Hash-індекс ефективніший, коли потрібно знайти конкретне значення за ключем швидко й точно, а не коли потрібно «порівнювати, сортувати чи групувати».

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.