MySQL高级系列-SQL性能下降的原因及执行顺序

258 字
1 分钟
MySQL高级系列-SQL性能下降的原因及执行顺序

1.SQL性能下降的原因#

  • 根本原因
    • 执行时间长
    • 等待时间长
  • 主要原因
    • SQL写的烂
    • 索引失效
    • 关联查询太多join
    • 服务器调优及各个参数设置(缓冲、线程数等)

2.SQL的执行顺序#

  • 手写

    select distinct 查询字段
    from 表名1
    [left]/[right]/[inner] join 表名2
    on 表1.字段=表2.字段
    where 查询条件
    group by 分组字段
    having 分组后判断条件
    order by 排序字段 [asc|desc]
    limit 分页字段
  • 机读

    1.执行 from 表名1
    2.执行 on 关联条件得到它们的交集
    3.执行 [left|right|inner] join 表名2
    4.执行 where 判断条件
    5.执行 group by 进行分组
    6.执行 having 对结果再次进行筛选
    7.执行 select
    8.执行 order by 进行排序
    9.执行 limit
  • 总结

    1609310274000
    1609310274000

    1.from 笛卡尔集
    2.on 主表保留
    3.join 不符合on也添加
    4.where 非聚合,非select 别名
    5.grouip by 改变对表的引用
    6.having 只作用分组后
    7.select distrinct
    8.order by 可使用select 别名
    9.limit rows offiset

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

MySQL高级系列-SQL性能下降的原因及执行顺序
https://tianch.com.cn/posts/tutorials/mysql-gao-ji-xi-lie-sql-xing-neng-xia-jiang-de-yuan-yin/
作者
田小晖
发布于
2020-12-30
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
田小晖
记录技术成长,分享运维与开发经验。
公告
分类
标签
站点统计
文章
134
分类
9
标签
29
总字数
203,962
运行时长
0
最后活动
0 天前
站点信息
构建平台
Cloudflare Pages
博客版本
Firefly v6.15.6
文章许可
CC BY-NC-SA 4.0