文章目录
- 索引的选择性
- 索引选择性的计算
- 单列索引的选择性计算值
- 组合列索引的选择性计算值
- 索引列的两个基本要求
索引的选择性
是指不重复的索引值与表总记录数的比值,其范围
(0,1]。通过索引的选择性,可以确定该索引是否
合理(70%)。
索引选择性的计算
表中已存在单列索引(普通索引)和组合索引(联合索引)
索引信息图:
表结构图:
单列索引的选择性计算值
mysql>
select count(distinct sage)/count(*) from student;
+-------------------------------+
| count(distinct sage)/count(*) |
+-------------------------------+
| 0.3636 |
+-------------------------------+
1 row in set
mysql> select count(distinct ssex
)/count(*) from student;
+-------------------------------+
| count(distinct ssex)/count(*) |
+-------------------------------+
| 0.1818 |
+-------------------------------+
1 row in set
上述显示两个单列索引计算值为0.3636和0.1818未达到0.7
组合列索引的选择性计算值
创建组合索引(联合索引)
create index idx_name01 on employees(sname,sage); #列的顺序:选择性高的列作为前导列
mysql> select count(distinct(concat(sname,sage
)))/count(*) from student;
+----------------------------------------------+
| count(distinct(concat(sname,sage)))/count(*) |
+----------------------------------------------+
| 1.0000 |
+----------------------------------------------+
1 row in set
索引列的两个基本要求
1、索引选择性越高越好
2、索引长度越短越好
根据上述代码得知,当索引的选择性越高的情况下索引的长度越长(组合索引),当索引的长度越短的情况下,索引的选择性越低,