22 lines
3.7 KiB
Markdown
22 lines
3.7 KiB
Markdown
|
---
|
|||
|
aliases:
|
|||
|
tags:
|
|||
|
- зрелость/🌱
|
|||
|
date:
|
|||
|
- - 2024-03-31
|
|||
|
zero-link:
|
|||
|
- "[[00 Базы Данных]]"
|
|||
|
parents:
|
|||
|
linked:
|
|||
|
---
|
|||
|
Селективность колонки в базе данных относится к мере разнообразия значений в столбце таблицы. Более технически, это отношение количества уникальных значений в столбце к общему количеству значений в этом столбце.
|
|||
|
|
|||
|
Если поле имеет высокую селективность, это означает, что в нем содержится много уникальных значений, и такой столбец хорошо подходит для [индексирования](Индекс%20в%20PostgreSQL.md). Например, столбец с уникальными идентификаторами пользователей в таблице имеет высокую селективность, потому что каждое значение уникально для каждого пользователя.
|
|||
|
|
|||
|
Наоборот, если поле имеет низкую селективность, это означает, что в нем много повторяющихся значений, и индексирование такого столбца может не привести к значительному увеличению производительности запросов. Примером может служить столбец, содержащий только два возможных значения (например, пол пользователя: "мужской" и "женский"). Такой столбец имеет низкую селективность, и индекс по нему может быть не очень эффективным при выполнении запросов.
|
|||
|
|
|||
|
Однако эту особенность можно использовать себе во благо. Например, когда необходимо находить редкие данные в куче однотипных данных. Например, мы используем флаг, чтобы отмечать обработанные записи, большая часть записей будет обработана, а нам необходимо находить записи, которые еще не обработаны, то есть у них флаг не установлен.
|
|||
|
|
|||
|
Селективность индекса обычно выражается как значение от 0 до 1, где 0 означает, что индекс не помогает отфильтровать ни одну строку (то есть, придется просмотреть все строки), а 1 означает, что индекс позволяет выбрать только одну строку из всего набора данных, что является идеальным сценарием.
|
|||
|
|
|||
|
Высокая селективность индекса означает, что запросы, использующие этот индекс, будут более эффективными, поскольку они смогут исключить большое количество нерелевантных строк без необходимости их полного сканирования. С другой стороны, индекс с низкой селективностью может оказаться неэффективным, так как большая часть данных все равно потребует проверки.
|