Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Postgres: index

Почему индексы неэффективны для полей с малым количеством значений?

Вопрос проверяет понимание принципов работы индексов и оптимизации запросов в базах данных.

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

Индексы эффективны, когда они хорошо отфильтровывают данные.
Поля с малым количеством значений имеют низкую селективность.
По такому индексу выбирается слишком много строк.
Планировщик часто предпочитает full scan.
Индекс в таких случаях не даёт выигрыша.

Длинный ответ

Эффективность индекса напрямую связана с селективностью данных.

Что такое селективность

Селективность показывает:

  • насколько хорошо условие отбирает строки

  • какую долю таблицы возвращает запрос

Пример низкой селективности:

  • status = ACTIVE / INACTIVE

  • gender = M / F

Почему индекс не помогает

При низкой кардинальности:

  • индекс указывает на большое количество строк

  • требуется много обращений к таблице

  • overhead превышает пользу

В результате:

  • планировщик выбирает последовательное сканирование

Когда индекс всё же полезен

Индекс может быть оправдан:

  • в составном индексе

  • при частых комбинированных фильтрах

  • для частичных индексов

Вывод

Индексы на поля с малым количеством значений редко эффективны сами по себе и требуют осознанного применения.

Уровень

  • Рейтинг:

    4

  • Сложность:

    6

Навыки

  • Postgres

    Postgres

Ключевые слова

#index

Подпишись на Java Developer в телеграм