V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
arbit
V2EX  ›  问与答

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

  •  
  •   arbit · 2023-06-28 12:06:08 +08:00 · 862 次点击
    这是一个创建于 496 天前的主题,其中的信息可能已经有所发展或是发生改变。
    接到一个需求,有两个表( a 表和表),接口需要返回分页列表,包括 a 表所有字段,b 表部分字段,c 字段( a 表 a1 除以 b 表 b1 )
    考虑到尽量不用 join ,所以用 a 表查询出分页记录后,在 java 层面再查询 b 表数据,最后再计算出 c 字段
    可是产品又提出需要对 c 字段进行筛选(比如 c 字段的值大于多少),这样分页就很难处理了

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