PHP新手!!!!
有一个数据表,数据量可能在几千到几万。
有一个统计接口,需要返回一些统计数据。
比如返回男女性别的数量,1~12级的等级数量,不同地区的数量等等。
该怎么写SQL?
用不同的查询语句,分别查询呢?
还是把全部数据查出来,然后自己过滤?
几万条数据全部查出来,会不会很慢?
PHP新手!!!!
有一个数据表,数据量可能在几千到几万。
有一个统计接口,需要返回一些统计数据。
比如返回男女性别的数量,1~12级的等级数量,不同地区的数量等等。
该怎么写SQL?
用不同的查询语句,分别查询呢?
还是把全部数据查出来,然后自己过滤?
几万条数据全部查出来,会不会很慢?
如果访问请求比较大,可以将结果放入缓存
clickhouse或者Doris导入数据和查询都是很快的
-- 统计男女性别的数量
SELECT gender, COUNT(*) AS count FROM user_table GROUP BY gender;
-- 统计1~12级的等级数量
SELECT level, COUNT(*) AS count FROM user_table WHERE level BETWEEN 1 AND 12 GROUP BY level;
-- 统计不同地区的数量
SELECT region, COUNT(*) AS count FROM user_table GROUP BY region;
4 回答13.2k 阅读✓ 已解决
5 回答7.7k 阅读✓ 已解决
2 回答7.4k 阅读✓ 已解决
2 回答6.6k 阅读✓ 已解决
1 回答5.2k 阅读✓ 已解决
1 回答5k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
有两个方案供参考
实时SQL统计查询
简要逻辑:按需求,每个统计项分别通过SQL统计查询,然后响应给前端展示
性能优化点:
1. 统计数据在满足实时性需求的前提下进行缓存
2.根据查询条件在数据库侧建立索引
异步SQL统计查询
简要逻辑:按需求罗列统计项新建统计数据库表,根据实时性要求针对每个统计项定时通过SQL统计查询,把结果写入统计数据表,每次前端请求的时候,后端直接查统计表,然后响应给前端展示
性能优化点:
1.根据查询条件在数据库侧建立索引
2.根据数据变化时机去更新统计数据,而非固定的定时