V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fallenff
V2EX  ›  程序员

大家平时写 SQL 用连接查询 or 子查询多吗?

  •  
  •   fallenff · 2017-08-25 11:34:24 +08:00 · 3497 次点击
    这是一个创建于 2447 天前的主题,其中的信息可能已经有所发展或是发生改变。

    今天听人说查询尽量少用连接查询,避免连接大表。 相应的来查询两次来代替连接查询,不知道这个说法是否正确?

    12 条回复    2017-08-25 16:21:22 +08:00
    ballshapesdsd
        1
    ballshapesdsd  
       2017-08-25 11:36:43 +08:00   ❤️ 1
    何出此言。。
    loveCoding
        2
    loveCoding  
       2017-08-25 11:43:51 +08:00
    现在确实比较推荐单表查询 , 把 sql 查询逻辑转移到代码中 , 后期分库分表的话不用改啥代码 .
    但是....绝大多数项目到不了分库分表的数据量就挂了...
    l00t
        3
    l00t  
       2017-08-25 11:44:44 +08:00
    多。Databases are born to join.
    lrh3321
        4
    lrh3321  
       2017-08-25 11:49:51 +08:00
    用的 MongoDB,大多数情况下是查一个 Collection 搞定,多表查询的逻辑在代码里。
    reus
        5
    reus  
       2017-08-25 12:00:28 +08:00
    大错特错
    在某些垃圾数据库里虽然正确
    但你可以选择不用垃圾啊
    yulitian888
        6
    yulitian888  
       2017-08-25 12:04:21 +08:00
    把 NoSQL 思想放到 SQL 里就是个错误。反之亦然。两者是互补,而不是替代关系
    yulitian888
        7
    yulitian888  
       2017-08-25 12:06:58 +08:00
    补充一下,如果对表以行为单位做缓存处理的话,join 确实会很蛋疼。但是这个场景很常见,但是属于程序逻辑,而不是 SQL 该处理的事。这种场景依然可以选择对 join 的结果集进行缓存
    chen2016
        8
    chen2016  
       2017-08-25 12:22:27 +08:00
    hive 用多了,基本都用 join
    MarcoQin
        9
    MarcoQin  
       2017-08-25 12:59:40 +08:00
    看慢查询日志,如果 join 让你变慢了那就换
    但是如 2 楼所说,一般到不了那种量级项目就挂了 233
    yscg
        10
    yscg  
       2017-08-25 13:06:32 +08:00
    join 还是单表,没有优劣之分,知道做一种选择带来的成本和利好更重要。
    akira
        11
    akira  
       2017-08-25 16:17:45 +08:00
    赞同。 很多人的 join 代码写不好,索引做不好。这种情况下,还不如直接让他们不要用
    Charkey
        12
    Charkey  
       2017-08-25 16:21:22 +08:00
    赞同 2 楼的观点
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3315 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 13:02 · PVG 21:02 · LAX 06:02 · JFK 09:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.