V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
arbit
V2EX  ›  问与答

求问不用 join 条件下,如何查询统计后的分页数据

  •  
  •   arbit · Jun 28, 2023 · 1750 views
    This topic created in 1034 days ago, the information mentioned may be changed or developed.
    接到一个需求,有两个表( a 表和表),接口需要返回分页列表,包括 a 表所有字段,b 表部分字段,c 字段( a 表 a1 除以 b 表 b1 )
    考虑到尽量不用 join ,所以用 a 表查询出分页记录后,在 java 层面再查询 b 表数据,最后再计算出 c 字段
    可是产品又提出需要对 c 字段进行筛选(比如 c 字段的值大于多少),这样分页就很难处理了

    像这种统计场景下,需要对处理后的字段进行筛选,排序等,大佬们一般是采取什么解决方案呢,是在 sql 直接计算吗
    主要是公司提倡尽可能不多表 join ,不过也合理,因为需求一旦叠加,多表的 join 确实难维护
    7 replies    2023-06-29 17:35:43 +08:00
    iPisces77
        1
    iPisces77  
       Jun 28, 2023
    这 不只能在 sql 层面算 你还要加筛选呢
    Akitora
        2
    Akitora  
       Jun 28, 2023
    子查询
    adoal
        3
    adoal  
       Jun 28, 2023
    让产品主管、技术主管、经费主管人肉 PK 先,谁活下来听谁的。
    产品主管壮烈了,就不用做这个需求了。
    技术主管壮烈了,可以换掉怕多酱的 MySQL ,改改规矩。
    产品主管和技术主管联手打得经费主管趴下做舔狗,可以加预算把事务和分析解耦,分析操作用数仓。
    potatowish
        4
    potatowish  
       Jun 28, 2023 via iPhone
    宽表了解一下
    arbit
        5
    arbit  
    OP
       Jun 28, 2023
    @potatowish #4 宽表的话一般是定时器去刷吗
    potatowish
        6
    potatowish  
       Jun 28, 2023 via iPhone
    @arbit 使用 cdc 中间件或者定时任务同步都可以,看业务对数据实时性的要求。
    biankobe24
        7
    biankobe24  
       Jun 29, 2023
    用定时任务刷到 a 表,最简单有效,根据更新时间刷就行,a 表某一条数据变动就刷一次这条数据,基本能保证是实时的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3199 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 49ms · UTC 00:24 · PVG 08:24 · LAX 17:24 · JFK 20:24
    ♥ Do have faith in what you're doing.