多字段 group by 有什么好的优化方案?

2023-11-09 18:51:36 +08:00
 zhongjun96

目前用的 Mysql ,表内有 40 个字段,600 万左右的数据。

要求可以随意组合 group by 查询字段。

SELECT COUNT(*) AS 数量,A,B,C,D,E,F,... FROM test_table GROUP BY A,B,C,D,E,F,...;

多的有十几个。导致查询很慢,但是又要实时查询。

因为是用户可以自定义组合查询,又不好定义索引。

有什么好的方案或者技术可以处理这种情况?本地部署的服务,没办法使用云服务。

684 次点击
所在节点    数据库
6 条回复
mubai
2023-11-09 19:53:10 +08:00
1 、用搜索引擎,比如 ElasticSearch ;
2 、用 Bitmap 的思路弄创建个索引表,或者加个字段用于索引。
zhongjun96
2023-11-10 08:42:21 +08:00
@mubai #1 不搜索值,只聚合 key ,不太适用 ES ,因为 group by 的 key 可以随意组合,也不好加字段单独索引。
spediacn
2023-11-10 09:02:21 +08:00
要么时间换空间,要么空间换时间,只是按分组统计,楼主不妨换个思路,原有结构我觉得不适合这么查,连表结构都打散了重新组合吧
zhuzhibin
2023-11-10 09:44:51 +08:00
@zhongjun96 不太理解为啥不能用 es 呢?你的目的不就是随意 grouy by 任意的且多个字段么? composite 不能解决?
zhongjun96
2023-11-10 10:04:55 +08:00
@zhuzhibin #4 学艺不精,第一次知道 composite 。看了下,好像可以,感谢🙏
zhuzhibin
2023-11-10 17:38:38 +08:00
@zhongjun96 不客气哈 0.0

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/990368

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX