高性能Mysql笔记 (6)---查询优化

本文探讨了MySQL查询为何会变慢的原因,包括请求了不必要的数据和扫描额外的行。介绍了查询执行的基础,如半双工连接和查询优化器的工作原理。讨论了查询优化器的局限性,并提出通过重构查询,使用小查询来提升性能。建议避免IN操作,优化排序方式,以及针对COUNT和关联查询的特定优化策略。
摘要由CSDN通过智能技术生成

为什么查询会慢

是否向db请求了不需要的数据
需要10行但查询了100行 | 多表关联返回全部列 | 每次都是取出所有列

db是否扫描了额外的行

【推荐】SQL性能优化的目标:至少要达到 range 级别,要求是ref级别,如果可以是consts最好。
说明: 1)consts 单表中最多只有一个匹配行(主键或者唯一索引),在优化阶段即可读取到数据。
 2)ref 指的是使用普通的索引。(normal index)
 3)range 对索引进行范围检索。
反例:explain表的结果,type=index,索引物理文件全扫描,速度非常慢,这个index级别比较range还低,与全表扫描是小巫见大巫。

查询执行的基础

执行查询的过程:
屏幕快照 2017-06-01 下午9.06.01.png

1)mysql 客户端和服务的连接是 半双工的。

2)查询优化器帮我们做的处理
语法解析&预处理 将sql语句 解析生成一颗树
最初 成本的最小单位是随机读取一个4K数据页的成本。现在已经变得很复杂了。
关联查询
mysql执行子查询时, 先将子查询的结果放到一个临时表中, 这个临时表不带任何索引, 然后将这个临时表当做普通表对待。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值