1.索引的作用
2.索引的分类(算法)
B树索引
默认使用的索引类型(差不多95%以上)
R树索引
Hash索引
在innodb中也有Hash索引,只是它是自适应的,不需要人管理,存储引擎帮我们自动去做的一个在索引层上的优化。
FullText
GIS 索引
3.Btree索引算法演变(了解)
B-Tree
B+Tree 在范围查询方面提供了更好的性能(> < >= <= like)
B*Tree
4.Btree索引功能上的分类
4.1 辅助索引
(1) 提取索引列的所有值,进行排序
(2) 将排好序的值,均匀的存放在叶子节点,进一步生成枝节点和根节点
(3) 在叶子节点中的值,都会对应存储主键ID
select * from t1 where id=10;
问题: 基于索引键做where查询,对于id列是顺序IO,但是对于其他列的查询,可能是随机IO.
4.2 聚集索引
4.3 聚集索引和辅助索引的区别
5.辅助索引细分
6.索引树高度
6.1 数据行数较多
分表 : parttion 用的比较少了.
分片:分布式架构.
6.2 字段长度
业务允许,尽量选择字符长度短的列作为索引列
业务不允许,采用前缀索引.
6.3 数据类型
7.索引的命令操作
7.1 查询索引 (key)
7.2 创建索引
7.3 删除索引
8.压力测试准备:
mysql> use test
mysql> source /tmp/t100w.sql
mysql> select * from t100w limit 10;
8.1 未做优化之前测试
8.2 索引优化后
9.执行计划分析
9.1 介绍
9.2 作用
将优化器 选择后的执行计划 截取出来.便于管理员判断语句的执行效率.
9.3 获取执行计划
9.4 分析执行计划
1. table
表名
2. type:ALL index range ref eq_ref const NULL
查询的类型:
全表扫描 : ALL
索引扫描 : index,range,ref,eq_ref,const(system),NULL
index: 全索引扫描
mysql> desc select countrycode from city;
const(system) :
主键或者唯一键的等值查询
mysql> desc select * from city where id=100;
10.联合索引应用细节
11.索引应用规范
11.1 相关说明
为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索引和创建什么类型的索引。