数据库查询统计数据怎么执行比较合适?

PHP新手!!!!

有一个数据表,数据量可能在几千到几万。
有一个统计接口,需要返回一些统计数据。
比如返回男女性别的数量,1~12级的等级数量,不同地区的数量等等。
该怎么写SQL?
用不同的查询语句,分别查询呢?
还是把全部数据查出来,然后自己过滤?
几万条数据全部查出来,会不会很慢?

阅读 3.5k
3 个回答

有两个方案供参考

实时SQL统计查询

简要逻辑:按需求,每个统计项分别通过SQL统计查询,然后响应给前端展示
性能优化点:1. 统计数据在满足实时性需求的前提下进行缓存 2.根据查询条件在数据库侧建立索引

异步SQL统计查询

简要逻辑:按需求罗列统计项新建统计数据库表,根据实时性要求针对每个统计项定时通过SQL统计查询,把结果写入统计数据表,每次前端请求的时候,后端直接查统计表,然后响应给前端展示
性能优化点:1.根据查询条件在数据库侧建立索引 2.根据数据变化时机去更新统计数据,而非固定的定时

  • 使用clickhouse或者Doris
  • 每隔一段时间将数据全量同步到clickhouse或者Doris,也可以实时增量同步,网上有很多方案,可以查查
  • 写sql在clickhouse或者Doris查询
  • 如果访问请求比较大,可以将结果放入缓存

    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;
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏