Mysql的执行顺序与优化分析

编写顺序与执行顺序分析

一条完整的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变慢

 

转载于:https://www.cnblogs.com/pcliu/p/11100929.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值