Java 后端面试题库 / 全部题解免费阅读理解原理,有条理地回答

COUNT(1)、COUNT(*) 与 COUNT(列) 怎样执行?

先说出你的答案

定义边界、关键机制、一个反例;P8题再补容量、失败与验证。

查看完整题解

参考回答

直接回答

COUNT() 数匹配行,COUNT(1) 数非 NULL 常量所以也数行,COUNT(列) 只数该列非 NULL 的行。MySQL 的 InnoDB 对 COUNT() 和 COUNT(1) 不必按旧口诀分性能。

讲清原理

事务要按可见性统计,不能总拿一个固定行数。查询条件和索引决定怎样找候选行,统计一个可空列时还要判断该列是否为空。

例子与易错点

三行里一行该列为 NULL,前两种计数都是三,COUNT(列) 为二。先选语义,再用计划验证访问成本。

这一组可空数据的三个计数分别为 3、3、2。

CREATE TABLE counter_demo (v INT);
INSERT INTO counter_demo VALUES (1), (NULL), (3);
SELECT COUNT(*), COUNT(1), COUNT(v) FROM counter_demo;

相关题 · 第 70 题、第 107 题

这道题,你掌握得怎么样?

掌握程度由你主动标记,阅读和收藏不会自动改变状态。