当前位置: 首页 > news >正文

mysql count(*)的性能如何?

文章目录

  • 为什么会出现这种情况呢?
  • 如何优化count(*)性能?
    • 增加redis缓存
    • 加二级缓存
    • 多线程执行
    • 减少join的表
    • 改成ClickHouse
  • count的各种用法性能对比

为什么会出现这种情况呢?

在Mysql中,count(*)的作用是统计表中记录的总行数。

而count()的性能跟存储引擎有直接关系,并非所有的存储引擎,count()的性能都很差。

在Mysql中使用最多的存储引擎是:innodb和myisam。

在myisam中会把总行数保存到磁盘上,使用count(*)时,只需要返回那个数据即可,无需额外的计算,所以执行效率很高。

而innodb则不同,由于它支持事务,有MVCC(即多版本并发控制)的存在,在同一个时间点的不同事务中,同一条查询sql,返回的记录行数可能是不确定的。

在innodb使用count(*)时,需要从存储引擎中一行行的读出数据,然后累加起来,所以执行效率很低。

如果表中数据量小还好,一旦表中数据量很大

http://www.lryc.cn/news/43993.html

相关文章:

  • gan实战(基础GAN、DCGAN)
  • 使用C语言实现服务器/客户端的TCP通信
  • AI模型训练推理一定要知道的事情
  • SPSS27破解安装后,出现应用程序无法正常启动(0xc000007b)
  • 央企程序员写了重大bug,会造成用户个人信息泄露,领导已经知道了,需要赶紧跑路吗?...
  • day14—选择题
  • 翻转链表(力扣刷题)
  • JavaEE——锁相关
  • C语言指针与数组 进阶
  • Java连接SqlServer错误
  • Elastic 可观察性 - 适用于当今 “永远在线” 世界的解决方案
  • Temu病毒式营销,如何在大红利时期快人一步?
  • ChatGPT使用案例之写代码
  • 蓝桥杯刷题第二十五天
  • 【牛客网】
  • SpringBoot中的事务
  • Zookeeper客户端Curator5.2.0节点事件监听CuratorCache用法
  • C++ using:软件设计中的面向对象编程技巧
  • 修建灌木顺子日期
  • 深入学习JavaScript系列(七)——Promise async/await generator
  • Mybatis中的Map的使用和模糊查询的需求实现及其防SQL注入优化
  • 【redis】redis缓存更新策略
  • LeetCode刷题--复制带随机指针的链表
  • 关于我的第一台电脑 华硕
  • 【华为OD机试 2023最新 】 最大化控制资源成本(C++ 100%)
  • leetcode 有序数组的平方(977)
  • 文本三剑客之awk
  • RK3568平台开发系列讲解(驱动基础篇)IS_ERR函数的使用
  • 特殊的类之注解
  • 商业分享:盲盒电商开启电商新可能