mysql高级----索引优化(一):索引分析

一、单表
1、表结构
mysql高级----索引优化(一):索引分析
2、案例分析
mysql高级----索引优化(一):索引分析
mysql高级----索引优化(一):索引分析

显示表的索引信息:show index from 表名
mysql高级----索引优化(一):索引分析

重新分析:仍然用了文件排序,因为comments范围查询,会导致索引失效
mysql高级----索引优化(一):索引分析
将where条件改成comments=1后,分析结果如下:相当于给定已知组合索引中的两个列,求未知的另外一个列时,可以用索引求得。
mysql高级----索引优化(一):索引分析
mysql高级----索引优化(一):索引分析
mysql高级----索引优化(一):索引分析
显示表的索引信息:show index from 表名
mysql高级----索引优化(一):索引分析

分析结果:此时排序就不会用到额外的 [文件排序]
mysql高级----索引优化(一):索引分析
二、两张表
1、表结构
mysql高级----索引优化(一):索引分析
2、案例分析(非唯一索引
2.1左连接
mysql高级----索引优化(一):索引分析mysql高级----索引优化(一):索引分析
解决方案:添加索引,但问题是,索引建在哪张表的card上呢??我们来试试看

mysql高级----索引优化(一):索引分析mysql高级----索引优化(一):索引分析mysql高级----索引优化(一):索引分析mysql高级----索引优化(一):索引分析
结论
mysql高级----索引优化(一):索引分析
mysql高级----索引优化(一):索引分析
mysql高级----索引优化(一):索引分析
结论:索引建在左表的card上,查询使用的类型为:index,比ref差了许多;且此种情况rows 20,20,也比上一种情况rows 1,20效率更低

2.2 右连接:

未建索引的情况
mysql高级----索引优化(一):索引分析

给左表class.card字段添加上索引(右连接索引加在左表,左连接索引加在右表)
mysql高级----索引优化(一):索引分析
mysql高级----索引优化(一):索引分析

三、三张表
1、表结构
在两张表的基础上添加一张新表phone
mysql高级----索引优化(一):索引分析
mysql高级----索引优化(一):索引分析

2、案例分析

三表左连接
mysql高级----索引优化(一):索引分析
建索引
mysql高级----索引优化(一):索引分析
重新分析
mysql高级----索引优化(一):索引分析
mysql高级----索引优化(一):索引分析
mysql高级----索引优化(一):索引分析