Селективность индекса является ключевым фактором оптимизации производительности SQL-запроса. Он измеряет, насколько хорошо индекс фильтрует данные, влияя на скорость извлечения данных. Понимание и расчет селективности индекса может помочь администраторам баз данных повысить эффективность запроса, выбрав наиболее эффективные индексы.

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

Индексная селективность относится к пропорции уникальных значений в столбце относительно общего числа строк. Высокая селективность указывает на то, что столбец имеет много уникальных значений, что делает индексы на нем более эффективными. И наоборот, низкая селективность предполагает множество дублирующих значений, снижая полезность индекса.

Расчет селективности индекса

Формула селективности индексов проста:

Селективность = количество уникальных значений / общее количество рядов

Например, если таблица имеет 1000 строк и столбец с 900 уникальными значениями, селективность составляет 0,9, что указывает на высокую эффективность индексации.

Пример реальных данных

Рассмотрим таблицу данных о клиентах с 10 000 строк. В колонке "Страна" содержится 50 уникальных названий стран. Селективность такова:

0.005 = 50/10 000

Эта низкая избирательность предполагает, что индексация столбца «Страна» может не значительно улучшить производительность запроса. Вместо этого, фокусировка на столбцах с более высокой избирательностью, таких как «Идентификатор клиента», который имеет 10 000 уникальных значений, была бы более полезной.

Последствия для оптимизации запросов

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