qjbcnrs
V2EX  ›  数据库

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

  •  
  •   qjbcnrs · Nov 9, 2023 · 1836 views
    This topic created in 1092 days ago, the information mentioned may be changed or developed.

    目前用的 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,...;
    

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

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

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

    Supplement 1  ·  Nov 10, 2023
    需要实现的效果
    ---
    https://imgur.com/QLA5FYX
    mubai
    mubai
    Nov 9, 2023
    1
    1 、用搜索引擎,比如 ElasticSearch ;
    2 、用 Bitmap 的思路弄创建个索引表,或者加个字段用于索引。
    qjbcnrs
    qjbcnrs
    OP
    Nov 10, 2023
    2
    @mubai #1 不搜索值,只聚合 key ,不太适用 ES ,因为 group by 的 key 可以随意组合,也不好加字段单独索引。
    spediacn
    spediacn
    Nov 10, 2023 via iPhone
    3
    要么时间换空间,要么空间换时间,只是按分组统计,楼主不妨换个思路,原有结构我觉得不适合这么查,连表结构都打散了重新组合吧
    zhuzhibin
    zhuzhibin
    Nov 10, 2023 via iPhone❤️1
    4
    @zhongjun96 不太理解为啥不能用 es 呢?你的目的不就是随意 grouy by 任意的且多个字段么? composite 不能解决?
    qjbcnrs
    qjbcnrs
    OP
    Nov 10, 2023
    5
    @zhuzhibin #4 学艺不精,第一次知道 composite 。看了下,好像可以,感谢🙏
    zhuzhibin
    zhuzhibin
    Nov 10, 2023
    6
    @zhongjun96 不客气哈 0.0
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5152 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 06:22 · PVG 14:22 · LAX 22:22 · JFK 01:22
    ♥ Do have faith in what you're doing.