> Какие операции выигрывают от B-tree индекса, а какие нет (Python)

Уровень: senior · Роль: backend · Язык: Python · Категория: Технические вопросы

Компании: Notamedia, TradingView

Стек: Python

> Пример ответа

B-tree индексы отлично подходят для операций точного поиска (WHERE id = 5), диапазонных запросов (WHERE age BETWEEN 20 AND 30), сортировки (ORDER BY), а также для GROUP BY и соединений по ключам - благодаря сбалансированной структуре и упорядоченности узлов.

Однако они неэффективны для:

  • Полнотекстового поиска (нужен GIN или специализированный индекс).
  • Поиска по шаблону с ведущим wildcard (LIKE '%text'), так как B-tree не может использовать префиксное сравнение.
  • Операций с массивами или JSONB (требуются GIN/GiST).
  • Частых вставок/обновлений с высокой конкурентностью на одном узле (может возникнуть блокировка страницы).
  • Поиска по хэш-значениям (лучше использовать hash-индекс).

Пример на Python с SQLAlchemy: для User.name LIKE 'John%' B-tree сработает, а для '%ohn' - нет, потребуется ILIKE с триграмным индексом.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью