编写顺序与执行顺序分析
一条完整的sql语句编写流程应该如下:
select distinct 查询字段 from 表名 JOIN 表名 ON 连接条件 where 查询条件 group by 分组字段
having 分组后条件 order by 排序条件 limit 查询起始位置, 查询条数
但是在mysql实际执行读取的过程中,它的顺序发生了变化:
from 表名 ON 连接条件 JOIN 表名 where 查询条件 group by 分组字段
having 分组后条件 select distinct 查询字段 order by 排序条件 limit 查询起始位置, 查询条数
整体执行过程:
1.先对多表进行关系,根据条件找出符合条件的记录
2.在符合条件的基础上进行再次where条件筛选
3.对筛选出来的内容进行分组操作
4.分组完成后, 使用having再次筛选出满足条件的记录
5.取所满足条件的记录
6.对取出的记录进行排序
7.最终从取出的记录当中获取多少条记录显示出来
执行优化分析
学习mysql数据库的优化,主要是从这2个方面进行学习
学习如何写出高质量的sql语句
学习任何保证创建的索引不会失效
mysql性能下降主要表现在这2个方面
执行语句所花费的时间变长
等待时间变长
mysql性能下降的主要原因
查询语句写的不好各种连接,各种子查询导致用不上索引或者没有建立索引
建立的索引失效建立了索引,在真正执行时,没有用上建立的索引
关联查询太多join
服务器调优及和个配置参数导致如果设置的不合理,比例不恰当,也会导致性能下降,sql变慢