MySQL组合索引提升查询速度实战

1、问题描述:生产环境后台管理查询司机钱包汇总列表及统计所有司机钱包收入和支出金额,不管是查询一天还是一个月的速度都比较慢,经常会超时,超过两分钟未响应结果
2、问题排查:通过排查发现查询时的两张表数据时间字段均是以日期为单位,而每张表中的数据都超过400万行,而且以每天接近2万条的数据增长,但是每张表中的时间区分度只有200多个不同的日期,导致查询时无法用到时间单列索引,最终全表扫描,导致查询十分缓慢
3、解决办法:根据查询条件以及两张表的join字段添加对应组合索引,
司机余额快照表添加日期和服务卡号的组合索引,日期在前,服务卡号在后,司机钱包汇总明细表添加服务卡号和日期的组合索引,服务卡号在前,日期在后,(由于每天服务卡号数量都有接近2万个,从而提升了索引区分度,最终查询时会用到组合索引)最终查询速度提升了接近二十倍,查询超时问题解决
PS:由于第一张表用的是时间字段,所以组合索引时间要放在前面,不然会导致索引失效
添加索引sql如下:
– table1 表添加索引
ALTER TABLE table1 ADD INDEX INDEX_DRIVER_NO_DATE ( driver_no, statistics_date );

– table2 表添加索引
ALTER TABLE table2 ADD INDEX INDEX_DAY_SERVICE_NO ( current_day, owner_id );

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值