某个列围一键( Distinct_ Keys )的数量叫作基数。 比如性别列, 该列只有男女之分, 所以
这一列基数是 2 。主键列的基数等于表的总行数。基数的高低影响列的数据分布。一般选择性大于 20% 的就是均匀分布的。
求一个表总行数:
Select count(*) from table;
求一个列基数:
Select count(distinct colname) from table;
Select count(*),count(distinct colname) from table;
基数越低说明重复数据越多,基数越高说明重复数据越少
在做优化的时候不能只看基数,还要看数据分布,如果里面某个用户占总行数多数,就算基数高也得走全表扫。
在做 SQL 优化的时候, 如果怀疑列数据分布不均衡, 我们可以使用
select 列,count(*) from 表 group by 列 order by 2 desc;
来 查看列的数据分布。
