mysql-sql语句分析

sql优化:

如何分析sql:
1)了解sql执行流程
2)sql语句的错误使用
3)sql优化的思路
4)explain分析
5)profiling分析

所谓的sql优化指的是什么
我们都知道mysql的优化说到底就是减少IO的操作,那么sql的优化呢?sql的优化其实就是指mysql中的sql语句基于优化器的规则来优化语句。
比如 select * from user和select id,name from user(具体下面在解释)

我们常说的优化sql语句主要是优化查询,但是修改,新增,删除当中有查询的时候也可能需要进行一定的优化

sql的执行流程
mysql-sql语句分析
其中分析也叫解析器,我们进行的优化主要是在优化器这边、
解析器:
1)词法分析:把sql语句进行拆分,分解成小token(token的本质就是一个一个的字符串,会分解成一个一个的单位,连逗号都会分解出来)
2)语法分析:解析token,并将它们组合成解析树

**优化器:**明确查询的目标计划
1):确定使用的表(在多对多的情况下,会选择合适的表作为查询的依赖)
2):对于数据表查询的字段;确定好查询表的顺序(jion)
3):重写where从句,去掉无意义的查询操作,尽可能的更改限制条件,减少查询范围
4)判断索引的使用:
a:是否覆盖所有的字段
b:是否在where上使用,是否在group,order上使用,
5):(join)连接方式是内还是外
6):(join)视图简化子查询,——》合并视图

sql优化的思路:
1):根据目标找问题,在进行相对的优化。首先从业务角度来了解用户的真正需求,尝试用其他方式来满足需求,这些是需要在sql优化之前考虑的。
2):查询返回的数据如果太大了,根据用户的需求情况,去分析用户对项目的最低承受度(优化的最终目标)

原则:
1、明确需要优化的功能
2、定位需要优化目标的性能瓶颈在哪里
3、明确优化的目标

警告:
优化并不意味这整个项目能达到预期,只是牺牲局部地区的性能来换取最大的效果