Что такое селективность индексов в базе данных? Стоит ли вешать индекс на boolean поле?

Селективность связана с долей строк, подходящих под условие. Индекс по boolean может быть полезен при редком значении, но часто бесполезен при выборе большой части таблицы.

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

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

Селективность связана с долей строк, подходящих под условие. Индекс по boolean может быть полезен при редком значении, но часто бесполезен при выборе большой части таблицы.

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

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

Селективность связана с долей строк, подходящих под условие. Индекс по boolean может быть полезен при редком значении, но часто бесполезен при выборе большой части таблицы.

Например, если необработанных строк очень мало, индекс для processed = false может ускорить очередь задач. В PostgreSQL частичный индекс по нужным ключам с таким predicate часто полезнее полного индекса на boolean. При распределении 50/50 и чтении многих столбцов последовательный scan может быть дешевле. Оценка зависит от статистики, размера таблицы и покрытия запроса. Термином селективность также называют долю уникальных значений — уточняйте используемое определение.

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

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

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

Подробнее