COUNT
是 MySQL 中的一个聚合函数,用于计算表中某列的行数。当需要对去重后的数据进行计数时,可以使用 COUNT(DISTINCT column_name)
。
COUNT(DISTINCT column_name)
能够准确地统计不重复的数据行数,避免了重复数据对统计结果的影响。GROUP BY
子句结合使用,对不同分组进行去重计数。SELECT COUNT(DISTINCT column_name) FROM table_name;
SELECT column_name, COUNT(DISTINCT another_column_name) FROM table_name GROUP BY column_name;
COUNT(DISTINCT column_name)
在大数据量下性能较差?原因:
COUNT(DISTINCT column_name)
需要对指定列进行去重操作,这在大数据量下会导致较高的计算复杂度和 I/O 开销。
解决方法:
column_name
上有索引,可以显著提高查询性能。假设有一个用户访问日志表 user_log
,包含用户ID (user_id
) 和访问时间 (visit_time
) 两列,现在需要统计某个时间段内访问网站的唯一用户数。
-- 基本去重计数
SELECT COUNT(DISTINCT user_id) AS unique_users
FROM user_log
WHERE visit_time BETWEEN '2023-01-01' AND '2023-01-31';
-- 分组去重计数
SELECT DATE(visit_time) AS visit_date, COUNT(DISTINCT user_id) AS unique_users_per_day
FROM user_log
WHERE visit_time BETWEEN '2023-01-01' AND '2023-01-31'
GROUP BY visit_date;
希望这些信息对你有所帮助!如果有更多问题,欢迎继续提问。
领取专属 10元无门槛券
手把手带您无忧上云