mysql的filtered利用率排查,提高索引效率

EXPLAIN  SELECT
	a.title,
	c.username 
FROM
	sys_announcement a
	LEFT JOIN sys_announcement_send b ON a.id = b.annt_id
	LEFT JOIN sys_user c ON b.user_id = c.id WHERE    a.bus_type = 'bpm_sms'   AND a.del_flag = 0 and a.end_time < NOW();	
       
 SHOW WARNINGS;
	
	

  • explain执行结果
    在这里插入图片描述
  • SHOW WARNINGS 执行结果
    在这里插入图片描述

可以看出来 a这个表的索引利用率很低,所有排查原因,从 第二个结果看出来是del_flag没有利用上索引导致的,排查原因发现是数据库的类型是字符串,但是用的数字类型去查询,所以导致没有利用上索引

修改后filtered的利用率100%
filtered的意思就是where 条件筛选的条数占扫描到的行数的百分百比
扫描到的行数就是rows这列数据的含义,也是就索引过滤后的行数
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值