MySQL慢查询优化

目录

优化方式

sql语句优化

索引优化

explain分析执行计划

show profile分析SQL

trace分析优化器执行计划

通过慢查询日志定位那些执行效率低的SQL语句

MySQL大分页查询问题


一文详解MySQL各种锁及MVCC的使用场景及原理

MySQL索引优化

Mysql日期格式转化问题


优化方式

sql语句优化

  • 尽量避免使用子查询而使用连接查询
  • 缩小查找范围,读取适当的记录LIMIT M,N,而不要读多余的记录
  • 优化group by,如果对group by语句的结果没有排序要求,要在语句后面加 order by null(group 默认会排序)
  • 尽量让group by过程用上表的索引
  • ......

索引优化

  • 尽量避免索引失效(Q27)
  • 尽量使用覆盖索引(只访问索引的查询(索引列和查询列一致))
  • SQL 执行计划 explain 中的 type:至少要达到 range 级别,要求是 ref 级别,如果可以是 consts 最好

explain分析执行计划

主要关注两个参数:

  • select_type: SIMPLE>PRIMARY>SUBQUERY>DERIVED>UNION>UNION RESULT
  • type: NULL>system>const>eq_ref>ref>range>index>ALL

show profile分析SQL

能够在做SQL优化时帮助我们了解时间都耗费在什么地方

trace分析优化器执行计划

MySQL5.6提供对SQL的追踪trace,通过trace文件能够进行近一步了解优化器执行的计划,以及sql解析的语句

通过慢查询日志定位那些执行效率低的SQL语句

MySQL大分页查询问题

  • 通过使用覆盖索引查询返回需要的主键,再根据主键关联原表获得需要的数据;
  • 设置唯一自增id,where id 取当页的最后一个id作为下一个页的起始条件
  • 采用 ElasticSearch 作为搜索引擎(倒排索引)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值