灯下哥谭 灯下哥谭
首页
关于
  • Hermes Agent 平台
  • Claude Code
  • OpenClaw
  • GPU 推理节点运维
  • DeepSeek Harness
  • MySQL 运维知识地图
  • Elasticsearch 运维知识地图
  • Redis 运维知识地图
  • TiDB 体系
  • DBA 常用 SQL 与命令
  • Nginx 运维知识地图
  • Prometheus 监控
  • Docker
  • Systemd
  • Iptables
  • Firewalld
  • Sshd
  • MySQL8 运维 SOP 手册
  • MySQL 实战 45 讲(读书笔记)
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

灯下哥谭

灯还亮着
首页
关于
  • Hermes Agent 平台
  • Claude Code
  • OpenClaw
  • GPU 推理节点运维
  • DeepSeek Harness
  • MySQL 运维知识地图
  • Elasticsearch 运维知识地图
  • Redis 运维知识地图
  • TiDB 体系
  • DBA 常用 SQL 与命令
  • Nginx 运维知识地图
  • Prometheus 监控
  • Docker
  • Systemd
  • Iptables
  • Firewalld
  • Sshd
  • MySQL8 运维 SOP 手册
  • MySQL 实战 45 讲(读书笔记)
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • MySQL8-SOP

  • 课程笔记

    • MySQL实战45讲

      • MySQL45讲学习笔记
      • MySQL基础架构
      • MySQL日志系统 (Redo Log 与 Binlog)
      • MySQL事务隔离级别的实现原理
      • MySQL索引原理与优化
      • MySQL锁机制详解
      • MySQL事务与MVCC机制
      • MySQL普通索引与唯一索引的选择
      • MySQL优化器如何选择索引
      • MySQL字符串字段索引优化
      • MySQL抖动刷脏页
      • 表空间管理与回收
      • COUNT函数详解
        • 1. COUNT函数的基本语法
        • 2. COUNT函数的特点
          • 2.1 COUNT(*) vs COUNT(列名)
          • 2.2 NULL值处理
        • 3. 实际应用场景
          • 3.1 统计总记录数
          • 3.2 统计特定条件的记录数
          • 3.3 去重统计
        • 4. 性能优化建议
          • 4.1 索引优化
          • 4.2 分区表优化
        • 5. 注意事项
          • 5.1 数据类型影响
          • 5.2 内存使用
        • 6. 示例
      • 日志索引
      • orderby工作原理
      • 随机排序实现
      • SQL性能差异函数与转换
      • 慢查询分析锁与版本
      • 幻读与间隙锁
      • 加锁规则分析
      • 应急性能优化方法
      • 数据持久化保证
      • 主备一致性原理
      • 高可用架构与切换
      • 备库延迟分析与优化
      • 主备切换GTID
      • 读写分离实践与问题
      • 数据库健康检查
      • 锁与死锁
      • 数据误删恢复
      • Kill命令详解
      • 查询与内存使用分析
      • Join原理与选择
      • 临时表原理与应用
      • 内部临时表详解
      • Memory引擎详解
      • 自增ID详解
      • Insert加锁分析
      • 表复制方法比较
      • Grant与权限管理
      • 分区表详解
      • SQL语句中的Join问题
      • 自增ID用尽问题
  • 专题系列
  • 课程笔记
  • MySQL实战45讲
灯下哥谭
2024-07-27
目录

COUNT函数详解

# COUNT函数详解

# 1. COUNT函数的基本语法

COUNT(*) 
COUNT(DISTINCT column_name)
COUNT(column_name)
1
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

示例查询:

-- 统计所有用户
SELECT COUNT(*) FROM users;

-- 统计有邮箱的用户数量
SELECT COUNT(email) FROM users;

-- 统计不重复的邮箱数量
SELECT COUNT(DISTINCT email) FROM users;
1
2
3
4
5
6
7
8
#学习笔记#MySQL
上次更新: 9/11/2026

← 表空间管理与回收 日志索引→

最近更新
01
DeepSeek Harness 实战 06|学习笔记:插件、工具、技能不在同一个维度上 原创
09-11
02
DeepSeek Harness 实战 05|让两个编码 Agent 共用一份长期记忆 原创
09-09
03
DeepSeek Harness 实战 04|学习笔记:从「已知限制」里读出三处设计张力 原创
09-08
更多文章>
Theme by Vdoing
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式