Хэш-индекс дает средний поиск равенства O(1), но не может поддерживать запросы диапазона или сортировку, поскольку хеширование разрушает порядок. Индекс B+дерева немного медленнее для чистого равенства, но поддерживает равенство, диапазон, префикс и отсортированные запросы — поэтому он является универсальным значением по умолчанию.
Пример
CREATE INDEX idx_orders_user_created ON orders (user_id, created_at DESC);
-- partial indexCREATE INDEX idx_users_active_email
ON users (email)
WHERE deleted_at ISNULL;
-- expression indexCREATE INDEX idx_users_lower_email ON users (LOWER(email));
-- JSONB GINCREATE INDEX idx_products_attrs ON products USING GIN (attrs);
Итог
Хэш-индекс дает средний поиск равенства O(1), но не может поддерживать запросы диапазона или сортировку, поскольку хеширование разрушает порядок.
В чем разница между хеш-индексом и индексом B+дерева? · Sobeso