Что означают высокая и низкая селективность в базах данных? селективность показывает эффективность фильтрации данных при выполнении запросов высокая селективность — условие отбирает небольшой процент строк (узкий фильтр) низкая селективность — условие возвращает значительную долю строк (широкий фильтр) высокая селективность → индекс работает эффективнее низкая селективность → СУБД может выбрать полный скан таблицы показатель учитывается оптимизатором запросов при выборе плана выполнения практическая польза — настройка индексов и оптимизация запросов в БД
Что означают высокая и низкая селективность в базах данных?
Что означают высокая и низкая селективность в базах данных? селективность показывает эффективность фильтрации данных при выполнении запросов высокая селективность — условие отбирает небольшой процент строк (узкий…
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Что означают высокая и низкая селективность в базах данных?
- селективность показывает эффективность фильтрации данных при выполнении запросов
- высокая селективность — условие отбирает небольшой процент строк (узкий фильтр)
- низкая селективность — условие возвращает значительную долю строк (широкий фильтр)
- высокая селективность → индекс работает эффективнее
- низкая селективность → СУБД может выбрать полный скан таблицы
- показатель учитывается оптимизатором запросов при выборе плана выполнения
- практическая польза — настройка индексов и оптимизация запросов в БД
Развёрнутый ответ
Краткий ответ
Селективность в базах данных характеризует способность индекса или условия фильтрации выделить небольшую часть строк из общего набора. При высокой селективности условие возвращает лишь малый процент записей, а при низкой селективности — большую их часть.
Основные аспекты
- При высокой селективности (например, 1–5%) индекс выбирает небольшое число записей. Поэтому СУБД может применить его для быстрого поиска, повысив производительность запросов.
- При низкой селективности (например, >50%) через индекс приходится получать слишком много строк. В такой ситуации индекс используется менее эффективно и иногда уступает по скорости обычному полному сканированию таблицы.
- На селективность влияют распределение данных и уникальность столбца. Уникальные и почти уникальные значения обеспечивают высокую селективность, тогда как булевы флаги и категории с небольшим числом вариантов обычно имеют низкую селективность.
Практическое применение
При проектировании индексов в PostgreSQL 14+ или MySQL следует отдавать предпочтение полям с высокой селективностью: это сокращает объём чтения с диска и позволяет снизить latency запросов примерно до ~50ms. Для столбцов с низкой селективностью стоит рассмотреть другие способы оптимизации, например фильтрованные индексы или изменение самого запроса.