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 题
和评分标准对照,你能独立回答到哪一步?
自评会安排下一次复习,不保存你的口述内容。
这道题,你掌握得怎么样?
掌握程度由你主动标记,阅读和收藏不会自动改变状态。