MySQL COUNT 用法详解

张开发
2026/4/18 4:01:13 15 分钟阅读

分享文章

MySQL COUNT 用法详解
在日常 SQL 开发中统计数据是最常见的需求之一而COUNT函数就是最核心的统计工具。文章目录一、COUNT 函数是什么1. 基本定义二、COUNT 的三种常见用法1. COUNT(*)2. COUNT(1)3. COUNT(列名)三、COUNT(*) vs COUNT(1) vs COUNT(列)四、COUNT 与 WHERE 条件1. 条件统计2. 多条件统计3. 可以和IF结合使用五、COUNT GROUP BY1. 分组统计2. 分组 条件六、COUNT DISTINCT去重统计1. 基本用法2. 多列去重MySQL 支持七、COUNT 的执行原理1. InnoDB 表2. MyISAM 表3. 为什么 COUNT(*) 推荐八、性能优化建议1. 优先使用 COUNT(*)2. 利用索引3. 避免全表扫描参考一、COUNT 函数是什么1. 基本定义COUNT是一个聚合函数用于统计行数。基本语法COUNT(expression)作用统计符合条件的记录数量。二、COUNT 的三种常见用法1. COUNT(*)SELECTCOUNT(*)FROMuser;特点统计表中所有行包含 NULL最常用 推荐使用2. COUNT(1)SELECTCOUNT(1)FROMuser;特点统计所有行本质和 COUNT(*) 一样 和 COUNT(*) 性能基本一致3. COUNT(列名)SELECTCOUNT(email)FROMuser;特点只统计该列不为 NULL 的行示例idemail1aqq.com2NULL结果COUNT(email) 1三、COUNT(*) vs COUNT(1) vs COUNT(列)写法是否统计 NULL含义COUNT(*)是所有行COUNT(1)是所有行COUNT(列名)否非 NULL 行一句话总结COUNT() COUNT(1)COUNT(列) ≠ COUNT()四、COUNT 与 WHERE 条件1. 条件统计SELECTCOUNT(*)FROMordersWHEREstatuspaid;含义统计已支付订单数量。2. 多条件统计SELECTCOUNT(*)FROMordersWHEREamount100ANDstatuspaid;3. 可以和IF结合使用具体IF和IFNULL用法可参考MySQL IF 和 IFNULL 用法详解-CSDN博客五、COUNT GROUP BY1. 分组统计SELECTstatus,COUNT(*)FROMordersGROUPBYstatus;结果示例statuscountpaid10unpaid52. 分组 条件SELECTuser_id,COUNT(*)ASorder_countFROMordersGROUPBYuser_id;六、COUNT DISTINCT去重统计1. 基本用法SELECTCOUNT(DISTINCTuser_id)FROMorders;含义统计不同用户数量。2. 多列去重MySQL 支持SELECTCOUNT(DISTINCTuser_id,product_id)FROMorders;七、COUNT 的执行原理1. InnoDB 表不保存总行数需要扫描数据2. MyISAM 表保存行数COUNT(*) 速度快3. 为什么 COUNT(*) 推荐原因语义清晰优化器会优化可利用索引八、性能优化建议1. 优先使用 COUNT(*)SELECTCOUNT(*)FROMtable;2. 利用索引SELECTCOUNT(id)FROMuser;如果 id 是主键索引会更快。3. 避免全表扫描大表建议使用缓存使用统计表参考SQL COUNT() 函数 | 菜鸟教程MySQL COUNT()函数的用法 - C语言中文网

更多文章