文章目录
MySQL学习笔记-不同count统计性能的比较
在做业务开发的时候,经常会使用 count()
函数对满足条件的结果集统计数量,但执行 select count(*) from t
这种语句的时候会很慢,而 count(*)
、count(1)
、count(字段)
、count(主键id)
这几种方式统计有所区别,这篇文章介绍学习一下不同 count()
之间区别。
1.笔记图
2.count(*) 的实现方式
- MySQL 引擎:
MyISAM
引擎把一个表的总行数存在了磁盘上,因此执行count(*)
的时候会直接返回这个数,效率很高(如果加了where
条件的时候也需要扫描结果) - InnoDB 引擎:
InnoDB
执行count(*)
的时候,需要把数据一行一行地从引擎里面读出来,然后累积计数 - 为什么 InnoDB 不跟 MyISAM 一样,也把数字存起来呢?
- 这是因为即使是在同一个时刻的多个查询,由于多版本并发控制
(MVCC&