MySQL count(*)优化

待优化表信息:

配置字段数记录数引擎有无索引
4CPU-16GRAM271719647InnoDB
1CPU-1GRAM271719647InnoDB

无WHERE的COUNT(*)优化

>>> SELECT COUNT(*) FROM table_name

用上面的sql查询所有记录条数的时候发现速度非常慢,约30+s

>>> EXPLAIN SELECT COUNT(*) FROM table_name

在这里插入图片描述

  • 首先将主键长度设置为32,并新建一个索引

在这里插入图片描述
在这里插入图片描述
查询速度降至7.494s

  • 再次进行优化,添加一个自增的主键列,用它进行索引

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
查询速度降至0.410s

来一个对比

配置记录数字段数原始速度第一次优化第二次优化
4CPU-16GRAM1719647275.351s0.342s0.311s
1CPU-1GRAM17196472734.239s7.494s0.410s

有WHERE的COUNT(*)优化

>>> SELECT COUNT(*) FROM table_name WHERE DAY(update_date) = 25 AND MONTH(update_date) = 3 AND YEAR(update_date) = 2020;

添加自增主键后,count(*)的速度有了大幅提升,但是在某个字段上的速度还是非常慢,约40s
在这里插入图片描述
给update_date添加索引后
在这里插入图片描述
速度下降至0.5s
在这里插入图片描述
来一个对比

配置记录数字段数原始速度优化
4CPU-16GRAM1719647270.605s0.386s
1CPU-1GRAM17196472739.384s0.464s
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值