原语句:

select

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

sum(sale_price) as account_money,

count(distinct point_card_no) as use_count,

sum(add_point_value) as point_sum

from tb_rm_coupon_point

where

delete_flg='0' and add_point_datetime >='2019/05/13' and add_point_datetime < '2019/05/20'

 执行时间:时间为24.9

mysql sum count 性能优化 ----测试数据22万条 随笔 第1张 

结果:

mysql sum count 性能优化 ----测试数据22万条 随笔 第2张

注:tb_rm_coupon_point 此表有295288条数据

mysql sum count 性能优化 ----测试数据22万条 随笔 第3张

 

此语句扫描了24032条数据 得到了结果 and 用了索引扫描

mysql sum count 性能优化 ----测试数据22万条 随笔 第4张

 

改进查询方法:

 语句:

SELECT

  SUM( CASE WHEN add_point_datetime >='2019/05/13' and add_point_datetime < '2019/05/20' THEN

  sale_price ELSE 0 END) as 'account_money',

   SUM( CASE WHEN add_point_datetime >='2019/05/13' and add_point_datetime < '2019/05/20' THEN

  add_point_value ELSE 0 END) as 'point_sum'

count( CASE WHEN add_point_datetime >='2019/05/13' and add_point_datetime < '2019/05/20'

THEN  true ELSE null END) as 'use_count'

FROM  tb_rm_coupon_point where delete_flg='0'

执行时间为:10秒左右   相比快了15

mysql sum count 性能优化 ----测试数据22万条 随笔 第5张

 

mysql sum count 性能优化 ----测试数据22万条 随笔 第6张 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄