mysql COUNT(*) 与 COUNT(DISTINCT col)

标签 mysql

Q1:为什么 count(*) 比 count(distinct col) 慢那么多?

Q2:id 是否应该始终使用 count(distinct col)?

select count(id) from source;
+-----------+
| count(id) |
+-----------+
|     22713 |
+-----------+
1 row in set (0.73 sec)

mysql> select count(distinct id) from source;
+--------------------+
| count(distinct id) |
+--------------------+
|              22836 |
+--------------------+
1 row in set (0.08 sec)

最佳答案

如果列被索引,COUNT(DISTINCT id) 只需要返回列索引中的项目数。 COUNT(id) 必须将每个索引条目指向的行数相加,或者扫描所有行。

关于您的第二个问题,请参阅 count(*) and count(column_name), what's the diff? .大多数时候,COUNT(*) 是最合适的;在某些情况下,例如计算通过外部连接连接的行,您需要使用 COUNT(columnname) 因为您不想计算空行。

关于mysql COUNT(*) 与 COUNT(DISTINCT col),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34533170/

相关文章:

php - 为什么我们不能使用 MAC 添加。而不是 IP 添加

php - Textarea内容到td,同时保留回车

php - 将一些数据反序列化为数组

mysql - 从桥接表中获取组 key

python - 如何获得由 4 个第一个字符组成的行?

mysql - 多张表查询的累计总和

php - 使用外部 php 脚本进行检查

mysql - SQL JOIN 重复行

php - mysql内连接计数问题

php - 如何在mysql中仅通过一次更改添加重复记录而其他字段为零