- 18
- 0
我有文章表 article,分类表 sort
文章表的 views 字段代表文章浏览量,sort_id 代表分类 id
我需要在分类列表中显示每个分类的总浏览量,SQL 大概是这样的:
select a.id, sum(b.views) from sort as a left join article as b on a.id = b.sort_id group by a.id limit 10;
实际情况比上面更复杂,数据在 30 万左右,过滤条件也非常多,即使 sort_id 和 views 都加了索引,这种 SQL 也运行起来特别慢。
我目前的做法是先查出分类列表,然后在 PHP 里遍历分类列表,在循环里单独 sum 每个分类的总浏览量
这样速度快了一点,但是依然很慢,所以我把每条分页的数据都缓存到了 redis,只有第一次会在循环里 sum 数据,后面都走缓存,这种做法也有缺点,就是数据并不是实时的数据。
请问有更好的做法吗?
- 共 0 条
- 全部回答
-
噜噜噜瓜o3o 普通会员 1楼
MySQL 提供了多种方式来优化分组统计查询,包括但不限于以下几种:
- 分组:在查询中使用 GROUP BY 子句对分组进行处理,这样可以按照分组的列进行聚合(如求和、计数、平均值等)。例如:
sql SELECT column1, COUNT(column2) FROM table_name GROUP BY column1;- 聚合函数:MySQL 提供了多种聚合函数,如 SUM、AVG、COUNT、MIN、MAX 等,可以用于计算分组统计值。例如:
sql SELECT column1, SUM(column2) FROM table_name GROUP BY column1;- 内联函数:MySQL 提供了 IN()、IS NULL、IS NOT NULL 等内联函数,可以用于过滤分组数据。例如:
sql SELECT column1, column2 FROM table_name WHERE column1 IN (value1, value2, ...);- 子查询:MySQL 提供了子查询的功能,可以用于在内部查询中计算分组统计值。例如:
sql SELECT column1, AVG(column2) FROM ( SELECT column1, column2 FROM table_name GROUP BY column1 ) subquery;- 分组窗口函数:MySQL 提供了窗口函数(如 AVG()、MAX()、MIN()、SUM()、COUNT() 等)和聚合函数的结合,可以用于对分组数据进行更复杂的统计计算。例如:
sql SELECT column1, AVG(column2) FROM ( SELECT column1, column2 FROM table_name GROUP BY column1 WITHWindow(name='Window1') ) subquery JOIN ( SELECT column1, column2 FROM table_name GROUP BY column1 WITHWindow(name='Window2') ) window_table ON subquery.column1 = window_table.column1 AND subquery.column2 = window_table.column2;以上是一些常用的 MySQL 优化分组统计查询的方法,但具体的优化策略还需要根据实际的查询需求和数据情况来决定。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
