Как бы вы разработали систему индексирования в PostgreSQL для таблицы с городами России, чтобы поиск по городам был оптимален?

Индекс выбирают под запросы: B-tree для равенства и сортировки, подходящий индекс для префикса, trigram для подстроки или нечёткого поиска. Для небольшой таблицы последовательное чтение может быть быстрее.

Короткий ответ

Что ответить на собеседовании

Индекс выбирают под запросы: B-tree для равенства и сортировки, подходящий индекс для префикса, trigram для подстроки или нечёткого поиска. Для небольшой таблицы последовательное чтение может быть быстрее.

Подробный разбор

Ответ с пояснениями

Индекс выбирают под запросы: B-tree для равенства и сортировки, подходящий индекс для префикса, trigram для подстроки или нечёткого поиска. Для небольшой таблицы последовательное чтение может быть быстрее.

Сначала определите требования: точное имя, поиск без регистра, автодополнение, регион и одинаковые названия городов. Если запрос использует lower(name), индекс должен соответствовать выражению; для префикса учитывают collation и operator class. Координатный поиск требует пространственной модели, а не индекса текста. Проверяйте планы на реальных запросах и данных. Не создавайте все виды индексов сразу: они занимают место и удорожают обновления.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее