索引列区分度

Jacky 数据库 2023-02-01 16

区分度一般用基数来表示,什么是基数呢? 一个列数值不重复的个数 。

例如存在列a的数据为 2、5、6,8,6,2,5,5,6,8 该列实际存在10条数据,而列a的基数为4(相当于给列a进行去重)。

也就是说如果索引列为主键或者用UNIQUE(唯一性约束)那么该列的基数就应该等于该列的行数,基数越大索引效果越好,基数越小索引检索效果越差(当基数太小优化器可能会放弃使用索引,采用全表扫描)。

在日常业务中最常见的就是性别,性别本来的值就是固定的男、女、其它这三种,性别的基数最大就是3,这种区分度极低的我们需避免使用索引。