MySQL的count(expr)函数选择指南
1. 背景知识
- 文章基于MySQL 8.0.30,使用InnoDB和MyISAM引擎。
count(expr): MySQL聚合函数,用于统计列值或表行数。- 统计列值: 只计非NULL值。
- 统计表行数: 不区分NULL与否。
2. 存储引擎差异
- MyISAM: 表定义、数据、索引分别存储,行数存储于磁盘。
- InnoDB: 所有内容存储于单一文件,无预先存储的行数。
3. count(*)行为
- MyISAM: 直接从磁盘读取行数,无
where条件时高效。 - InnoDB: 无预先存储行数,需逐行累加。
4. MVCC与事务隔离级别
- InnoDB支持事务,使用MVCC实现可重复读,影响
count(*)行为。
5. 性能分析
- InnoDB优化:选择最小索引树遍历,减少数据量,提升性能。

最低0.47元/天 解锁文章
4425

被折叠的 条评论
为什么被折叠?



