Mysql(十二) — SQL优化仅仅是优化sql本身么?

一、不要在索引字段上进行函数操作

背景

近期对系统进行慢SQL优化,通过订阅Mysql慢SQL日志搜集到了一批慢SQL。其中有一条SQL很奇怪,表中已有索引,并且表数据量并不很大,查询效率很低。

原因分析

根本原因:sql参数入参为long类型,数据库表为varchar类型,数据库进行了隐式转换,在索引列上进行了函数操作,导致索引失效。

解决办法

  1. 将代码中的方法入参类型改为long。
  2. 由于系统是读写分离的,在此方法上指定使用读库。

解决过程

  1. 准备

略过。。。。

 

二、不要在区分度不高的字段上创建索引

背景

其中有一条SQL用于like查询,表中已有索引,查询遵循左匹配,但是explian发现未走索引,索引失效。

原因分析

根本原因:like查询,区分度不高,导致索引失效。

解决办法

  1.  不要在区分度不高的字段上创建索引。
  2. 如果创建了索引,在遵循左匹配的时候,尽可能的增加入参区分度。

解决过程

  1. 准备

掠过。。。。。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值