digital-garden/_inbox/Селективность колонки.md
2024-06-13 21:01:37 +03:00

3.7 KiB
Raw Permalink Blame History

aliases tags date zero-link parents linked
зрелость/🌱
2024-03-31
00 Базы Данных

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

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

Наоборот, если поле имеет низкую селективность, это означает, что в нем много повторяющихся значений, и индексирование такого столбца может не привести к значительному увеличению производительности запросов. Примером может служить столбец, содержащий только два возможных значения (например, пол пользователя: "мужской" и "женский"). Такой столбец имеет низкую селективность, и индекс по нему может быть не очень эффективным при выполнении запросов.

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

Селективность индекса обычно выражается как значение от 0 до 1, где 0 означает, что индекс не помогает отфильтровать ни одну строку (то есть, придется просмотреть все строки), а 1 означает, что индекс позволяет выбрать только одну строку из всего набора данных, что является идеальным сценарием.

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