V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhongjun96
V2EX  ›  数据库

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

  •  
  •   zhongjun96 · 2023-11-09 18:51:36 +08:00 · 673 次点击
    这是一个创建于 365 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

    第 1 条附言  ·  364 天前
    需要实现的效果
    ---
    https://imgur.com/QLA5FYX
    mubai
        1
    mubai  
       2023-11-09 19:53:10 +08:00
    1 、用搜索引擎,比如 ElasticSearch ;
    2 、用 Bitmap 的思路弄创建个索引表,或者加个字段用于索引。
    zhongjun96
        2
    zhongjun96  
    OP
       364 天前
    @mubai #1 不搜索值,只聚合 key ,不太适用 ES ,因为 group by 的 key 可以随意组合,也不好加字段单独索引。
    spediacn
        3
    spediacn  
       364 天前 via iPhone
    要么时间换空间,要么空间换时间,只是按分组统计,楼主不妨换个思路,原有结构我觉得不适合这么查,连表结构都打散了重新组合吧
    zhuzhibin
        4
    zhuzhibin  
       364 天前 via iPhone   ❤️ 1
    @zhongjun96 不太理解为啥不能用 es 呢?你的目的不就是随意 grouy by 任意的且多个字段么? composite 不能解决?
    zhongjun96
        5
    zhongjun96  
    OP
       364 天前
    @zhuzhibin #4 学艺不精,第一次知道 composite 。看了下,好像可以,感谢🙏
    zhuzhibin
        6
    zhuzhibin  
       364 天前
    @zhongjun96 不客气哈 0.0
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2685 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 15:01 · PVG 23:01 · LAX 07:01 · JFK 10:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.