payboy
V2EX  ›  Java

业务多表 join,单条 SQL 梭哈一把好还是多次查询在代码整合好

  •  
  •   payboy · Apr 22, 2019 · 6854 views
    This topic created in 2756 days ago, the information mentioned may be changed or developed.
    有些类似报表的业务需求,通常是十几张表 join 查询,写成一条非常长的 SQL。
    从代码层面看,查询即所求,简单但难看。
    如果从效能方面看,单条 SQL 是不是比较好。
    Supplement 1  ·  Apr 22, 2019
    SQL 走索引,有一两张千万级的表,可能有子查询
    26 replies  •  2019-04-23 20:03:33 +08:00
    kevinhwang
    kevinhwang
    Apr 22, 2019
    1
    你能这么问证明你团队无约束。
    如果外包请疯狂 join 表然后愉快玩耍。
    后续要自己维护的请慎重!!!
    zarvin
    zarvin
    Apr 22, 2019
    2
    我公司后台开发好像就是很多 join,那 sql 语句贼长
    YzSama
    YzSama
    Apr 22, 2019 via iPhone
    3
    我宁愿分开查,增加缓存。。
    passion336699
    passion336699
    Apr 22, 2019
    4


    是这种吗, 下面还有很多很多截不完了....
    NoKey
    NoKey
    Apr 22, 2019
    5
    我们这里一般都是分开,然后在编程语言里自行查找组合需要的数据
    adzchao
    adzchao
    Apr 22, 2019
    6
    @passion336699 这不是很正常么 我感觉你这还不是复杂的
    onepunch
    onepunch
    Apr 22, 2019
    7
    小表问题不大。如果表增长无法预期你还是别这么做了
    rockyou12
    rockyou12
    Apr 22, 2019
    8
    统计业务请一定用代码来写,千万别 join N 级。像我们很多 1000 多行,子查询 3、4、5 层的 sql 完全没办法维护……
    Mmiracle110
    Mmiracle110
    Apr 22, 2019
    9
    join 表多的话,表内数据小还好,表大的话,你试试......
    sjzzz
    sjzzz
    Apr 22, 2019
    10
    ....建议换一个团队。
    VensonEEE
    VensonEEE
    Apr 22, 2019
    11
    你们怕啥没见过两万多字的 sql,存储过程。以前某行业应用,报表系统,全 oracle 存储过程,改个逻辑要重写一个星期。 真是佩服 oracle 的性能。
    payboy
    payboy
    OP
    Apr 22, 2019
    12
    @passion336699 是的,复杂点还有各种子查询。
    Mazexal
    Mazexal
    Apr 22, 2019
    13
    第一, 不好做缓存优化
    第二, 增加维护成本
    第三, 不适合后期做分库分表
    第四, 不适合做 sql 查询优化
    优势: 一开始写的速度快那么一丢丢
    结论你自己想吧
    est
    est
    Apr 22, 2019
    14
    JOIN 没啥不好的。

    无脑 JOIN。。。只要 dba 角色那个人能管理得过来也挺好的。
    waising
    waising
    Apr 22, 2019
    15
    @Mazexal #13 关于 sql 优化,平时是没有用 orm 吗?如果是单表的话感觉 orm 的优势也不大了啊
    guyujiezi
    guyujiezi
    Apr 22, 2019
    16
    join 挺好的,SQL 语句越拼越有意思,还可以为将来系统优化什么的创造 KPI
    Removable
    Removable
    Apr 22, 2019
    17
    @rockyou12 #8 别说了,我接手的有个模块,之前做的那个沙雕把所有的业务都放到存储过程里了,那维护起来就一言难尽
    DiverRD
    DiverRD
    Apr 22, 2019
    18
    join 一时爽,迁移火葬场
    xuanbg
    xuanbg
    Apr 22, 2019
    19
    都不会写 sql 吗?几个表 join 就把你们吓坏了?只要单表数据量不上千万级别,join 上 10 来个表数据也能秒出好不好。

    话说单表数据量要是上千万级别的,做表结构设计的那个可以解雇了。
    tiedan
    tiedan
    Apr 22, 2019
    20
    我选择 join
    zhchyu999
    zhchyu999
    Apr 22, 2019
    21
    后台就怎么爽怎么来,量大 mysql 还是简单查询比较好
    mk0114
    mk0114
    Apr 22, 2019
    22
    可是有些分页或者过滤一定要联合其他表查询该怎么办呢?
    glacer
    glacer
    Apr 22, 2019
    23
    统计型 SQL 敢在业务数据库上跑?不怕分分钟拖垮掉?
    lvchao
    lvchao
    Apr 23, 2019
    24
    不用多表 join 对于分页怎么处理
    gosansam
    gosansam
    Apr 23, 2019
    25
    写过一段上午写好 睡个午觉起来就看不懂的 sql 了 join 也就七八个 然后子查询一堆
    jianmo1997
    jianmo1997
    Apr 23, 2019
    26
    在我司前一种方式一般都会被 DBA 杀了祭天
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1768 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 62ms · UTC 05:57 · PVG 13:57 · LAX 21:57 · JFK 00:57
    ♥ Do have faith in what you're doing.