最近的一些sql优化总结

sql优化的几个关键点,尽量使用索引,避免各种锁,减少数据扫描数量

1).mysql嵌套子查询效率确实比较低,可以将其优化成连接查询 

2).连接表时,可以先用where条件对表进行过滤,然后做表连接 (虽然mysql会对连表语句做优化)

3).建立合适的索引,必要时建立多列联合索引

4).学会分析sql执行计划,mysql会对sql进行优化,所以分析执行计划很重要

 

索引

建立索引的几大情况

  1. 多表连接的字段上建立索引
  2. where条件字段上建立索引
  3. 排序字段上建立索引
  4. 分组字段上建立索引

索引进一步优化的时候可以考虑的方向:

(1)很多时候,用执行计划分析,单个索引都是

type=index_merge(这是mysql对多个单列索引的优化,对结果集采用intersect并集操作)

这种情况下,如果有业务需求,可以考虑建立多列索引,让他的type提升到ref(因为是最左前缀,在建立联合索引时可以考虑把最大区分度的字段放在最左边,如果区分度差不多,挑选字段较短的字段放在索引的最左端)

(2)在连接查询时,被连接的新子表尽可能使用覆盖索引

这里需要了解一下回表和索引下推

MySQL在辅助索引上找到对应的主键值并通过主键值在聚簇索引上查找所要的数据就叫回表

索引下推

mysql5.6以后,mysql增加了索引下推,避免了多余的回表操作(实现原理:InnoDB并没有忽略这个字段ÿ

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值