Что означают высокая и низкая селективность в базах данных?

Что означают высокая и низкая селективность в базах данных? селективность показывает эффективность фильтрации данных при выполнении запросов высокая селективность — условие отбирает небольшой процент строк (узкий…

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

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

Что означают высокая и низкая селективность в базах данных? селективность показывает эффективность фильтрации данных при выполнении запросов высокая селективность — условие отбирает небольшой процент строк (узкий фильтр) низкая селективность — условие возвращает значительную долю строк (широкий фильтр) высокая селективность → индекс работает эффективнее низкая селективность → СУБД может выбрать полный скан таблицы показатель учитывается оптимизатором запросов при выборе плана выполнения практическая польза — настройка индексов и оптимизация запросов в БД

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

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

Что означают высокая и низкая селективность в базах данных?

  • селективность показывает эффективность фильтрации данных при выполнении запросов
  • высокая селективность — условие отбирает небольшой процент строк (узкий фильтр)
  • низкая селективность — условие возвращает значительную долю строк (широкий фильтр)
  • высокая селективность → индекс работает эффективнее
  • низкая селективность → СУБД может выбрать полный скан таблицы
  • показатель учитывается оптимизатором запросов при выборе плана выполнения
  • практическая польза — настройка индексов и оптимизация запросов в БД

Развёрнутый ответ

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

Селективность в базах данных характеризует способность индекса или условия фильтрации выделить небольшую часть строк из общего набора. При высокой селективности условие возвращает лишь малый процент записей, а при низкой селективности — большую их часть.

Основные аспекты

  • При высокой селективности (например, 1–5%) индекс выбирает небольшое число записей. Поэтому СУБД может применить его для быстрого поиска, повысив производительность запросов.
  • При низкой селективности (например, >50%) через индекс приходится получать слишком много строк. В такой ситуации индекс используется менее эффективно и иногда уступает по скорости обычному полному сканированию таблицы.
  • На селективность влияют распределение данных и уникальность столбца. Уникальные и почти уникальные значения обеспечивают высокую селективность, тогда как булевы флаги и категории с небольшим числом вариантов обычно имеют низкую селективность.

Практическое применение

При проектировании индексов в PostgreSQL 14+ или MySQL следует отдавать предпочтение полям с высокой селективностью: это сокращает объём чтения с диска и позволяет снизить latency запросов примерно до ~50ms. Для столбцов с низкой селективностью стоит рассмотреть другие способы оптимизации, например фильтрованные индексы или изменение самого запроса.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку