Проверяет понимание специфических типов индексов и их применимости в реальных задачах.
Хэш-индексы эффективны только для поиска точных совпадений (оператор =). Они не подходят для диапазонов (>, <), сортировки или частичных совпадений (LIKE). Лучше всего работают на больших таблицах, где часто ищут по уникальным значениям (например, по ID).
Хэш-индекс — структура, где ключ преобразуется в уникальный хэш (как в словаре Python).
Преимущества:
Мгновенный поиск по точному совпадению (O(1) в идеале).
Эффективен для больших данных.
Недостатки:
Не поддерживает:
Диапазоны (например, WHERE price > 100).
Сортировку (ORDER BY).
Частичный поиск (WHERE name LIKE 'A%').
Коллизии: Разные ключи могут дать одинаковый хэш (редко).
Где использовать:
Поиск по уникальным значениям:
SELECT * FROM users WHERE id = 123; -- id — первичный ключЧастые запросы на равенство:
SELECT * FROM products WHERE sku = 'ABCD-123'; -- sku уникаленПример создания в PostgreSQL:
CREATE INDEX idx_users_email ON users USING HASH (email);Ограничения:
В MySQL хэш-индексы поддерживаются только для движка MEMORY/HEAP.
В PostgreSQL работают для любых таблиц.
Вывод:
Используйте хэш-индексы, если нужен быстрый поиск по точному значению. Для всего остального — B-tree.