mysql高级----索引优化(一):索引分析
2018-03-05 18:57
686 查看
一、单表1、表结构
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/04/9f81f1fe4a7f12e37d2ab0ca7e2382cc)
2、案例分析
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/04/c73aeb1afd10b810a6a5abb40e9f5572)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/04/69d103f5e0eafa18e5c3021cdfd638ac)
显示表的索引信息:show index from 表名
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/04/3c4cd0c70286fbefca4948a3ed6d91da)
重新分析:仍然用了文件排序,因为comments范围查询,会导致索引失效
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/04/4ac2875201fb89f57852adb49cb0d20b)
将where条件改成comments=1后,分析结果如下:相当于给定已知组合索引中的两个列,求未知的另外一个列时,可以用索引求得。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/04/1bd80e63809c24c1bdb6e3400d333eca)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/04/bdb91d4c79de4292c8ffa4ef0c5b76e2)
![](https://img-blog.csdn.net/20180305185156324?watermark/2/text/aHR0cDovL2Jsb2<br/>ad71<br/>cuY3Nkbi5uZXQvaGgxc2Rmc2Y1NjQ1Ng==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
显示表的索引信息:show index from 表名
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/04/da3c09dca38b0abcf3a0d31e83cb13fb)
分析结果:此时排序就不会用到额外的 [文件排序]
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/04/c34048d681462cf3cd3673e18f223f2a)
二、两张表1、表结构
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/04/c7e2f4a035635a7e2a150e0f007203a6)
2、案例分析(非唯一索引)2.1左连接
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/04/ce4db42f5de272b9902c3fcc97729428)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/04/da6ed28ce659dcf5cad5b573b8ee8679)
解决方案:添加索引,但问题是,索引建在哪张表的card上呢??我们来试试看
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/04/3de4171cf38f8290f632f2303940fb6d)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/04/8ce4485830b6442f5ca61c859fda0956)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/04/7ed68213ba4601b88917ade646dbe40f)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/04/313719a3ce877f7239d89949de699896)
结论
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/04/e2516d47a99b9f0f4429c748635385f3)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/04/82a570acefa59ad8deb71a50ec38a364)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/04/6a785635c8059acc52e3fc239990d211)
结论:索引建在左表的card上,查询使用的类型为:index,比ref差了许多;且此种情况rows 20,20,也比上一种情况rows 1,20效率更低
2.2 右连接:
未建索引的情况
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/04/4f6a0a6f1cfd508f0af972b92c2860aa)
给左表class.card字段添加上索引(右连接索引加在左表,左连接索引加在右表)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/04/21c2cf02ffa88d963caaaa2d3db898d0)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/04/b39bf77c0ff944cc7bc861eb6df766f7)
三、三张表1、表结构在两张表的基础上添加一张新表phone
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/04/44ec0b0ffbe4219f62b70bc76af58e04)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/04/520b7c97aec693dc169b35091d531c6f)
2、案例分析
三表左连接
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/04/9098322f4dcb3e626551fcc4135c29aa)
建索引
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/04/8b7307afcb48c17ede93088a92b91e49)
重新分析
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/04/32a01a0a4f1c0d0e74fdab85be452237)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/04/1757ffba112408ad81c813e0be5a4bed)
2、案例分析
显示表的索引信息:show index from 表名
重新分析:仍然用了文件排序,因为comments范围查询,会导致索引失效
将where条件改成comments=1后,分析结果如下:相当于给定已知组合索引中的两个列,求未知的另外一个列时,可以用索引求得。
显示表的索引信息:show index from 表名
分析结果:此时排序就不会用到额外的 [文件排序]
二、两张表1、表结构
2、案例分析(非唯一索引)2.1左连接
解决方案:添加索引,但问题是,索引建在哪张表的card上呢??我们来试试看
结论
结论:索引建在左表的card上,查询使用的类型为:index,比ref差了许多;且此种情况rows 20,20,也比上一种情况rows 1,20效率更低
2.2 右连接:
未建索引的情况
给左表class.card字段添加上索引(右连接索引加在左表,左连接索引加在右表)
三、三张表1、表结构在两张表的基础上添加一张新表phone
2、案例分析
三表左连接
建索引
重新分析
相关文章推荐
- MySQL高级知识-查询与索引优化分析
- MySQL高级第二章——索引优化分析
- MySQL高级索引优化分析
- MySQL高级知识-查询与索引优化分析
- MySQL高级开发(四)---索引优化分析(MySQL执行计划解析)
- 【转】由浅入深探究mysql索引结构原理、性能分析与优化
- mysql性能优化-慢查询分析、优化索引和配置
- mysql性能优化-慢查询分析、优化索引和配置
- mysql优化:慢查询分析、索引配置优化
- 由浅入深探究mysql索引结构原理、性能分析与优化
- 索引的分析和优化(基于MySQL)
- mysql性能优化-慢查询分析、优化索引和配置
- MySQL高级开发(六)--索引优化总结(优化口诀)
- mysql性能优化-慢查询分析、优化索引和配置
- 【MySQL】(1)索引优化分析
- mysql性能优化-慢查询分析、优化索引和配置
- mysql性能优化-慢查询分析、优化索引和配置
- MySql优化2——索引与性能分析
- 【转】加速动态网站之MySQL索引分析和优化
- 由浅入深探究mysql索引结构原理、性能分析与优化-转