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

mysql count(*)的性能如何?

文章目录

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

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

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

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

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

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

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

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

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


http://www.kler.cn/a/4375.html

相关文章:

  • Life Long Learning(李宏毅)机器学习 2023 Spring HW14 (Boss Baseline)
  • MCP Server开发的入门教程(python和pip)
  • 浅谈云计算07 | 云安全机制
  • wpa_cli命令使用记录
  • SpringBoot + Websocket实现系统用户消息通知
  • CRMEB多商户商城系统JAVA版 B2B2C商家入驻平台系统独立版全开源
  • javaEE简单示例——基于注解的事务管理
  • 解决echarts的柱状图和折线图的点击非图表图形元素不会触发事件
  • 轻松拿下年薪35W+Offer!这15个高频开发面试问题必须掌握!
  • printf()函数
  • 企业邮箱的定义和要求
  • MySQL调优
  • 1.2 从0开始学Unity游戏开发--运行原理
  • vue-antd-admin——实现全网站选项的切换并实现页面的刷新——技能提升
  • iOS私有pod库的gitignore文件
  • 关于清除浮动
  • Linux中find命令使用示例
  • 聊一聊前端的性能指标
  • CSS transition 小技巧!如何保留 hover 的状态
  • 图解redis的AOF持久化
  • thinkphp+vue水果购物商城网站
  • 二维前缀和求子矩阵
  • VSQT 联编无转到槽选项--VS2019中使用QT建立信号和槽函数连接
  • Pytorch线性模型实现——up主:刘二大人《PyTorch深度学习实践》
  • Spring —— Spring简单的读取和存储对象Ⅰ
  • php使用yield处理大数据文件