count函数详解
# COUNT函数详解
# 1. COUNT函数的基本语法
COUNT(*)
COUNT(DISTINCT column_name)
COUNT(column_name)
1
2
3
2
3
# 2. COUNT函数的特点
# 2.1 COUNT(*) vs COUNT(列名)
COUNT(*):计算表中的所有行数,包括NULL值COUNT(列名):计算指定列非NULL值的行数COUNT(DISTINCT 列名):计算指定列不重复值的数量
# 2.2 NULL值处理
- COUNT函数会忽略NULL值
- 如果某行的指定列值为NULL,则不会计入统计
# 3. 实际应用场景
# 3.1 统计总记录数
SELECT COUNT(*) FROM users;
1
# 3.2 统计特定条件的记录数
SELECT COUNT(*) FROM users WHERE age > 18;
1
# 3.3 去重统计
SELECT COUNT(DISTINCT email) FROM users;
1
# 4. 性能优化建议
# 4.1 索引优化
- 对于COUNT(*)操作,MySQL会使用表的主键或索引来提高效率
- 如果经常进行COUNT操作,确保相关字段有合适的索引
# 4.2 分区表优化
- 对于大表,可以考虑使用分区表来提高COUNT查询性能
# 5. 注意事项
# 5.1 数据类型影响
- 对于字符串类型,DISTINCT会比较字符串的值
- 对于数值类型,DISTINCT会比较数值的大小
# 5.2 内存使用
- COUNT(DISTINCT)可能会消耗较多内存,特别是当去重的数据量很大时
# 6. 示例
假设有以下表结构:
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(100),
age INT
);
1
2
3
4
5
6
2
3
4
5
6
示例查询:
-- 统计所有用户
SELECT COUNT(*) FROM users;
-- 统计有邮箱的用户数量
SELECT COUNT(email) FROM users;
-- 统计不重复的邮箱数量
SELECT COUNT(DISTINCT email) FROM users;
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
上次更新: 3/4/2026