我们公司不让开发使用 join 包括 left join,不让用子查询,合理吗?

2020-06-03 16:47:10 +08:00
 hackingwu

我们公司规范不让开发使用 join 包括 left join,也不让用子查询,原因是为了减轻 DB 的压力,这样就导致我们一个多表联合查询的业务就要拆分多条语句,导致无效的请求和数据传输。我们业务是微服务架构。 我觉得是很不合理的。减轻了 DB parse 的压力,却带来了处理请求和数据传输的压力。 大家觉得呢?是我错了吗?

30651 次点击
所在节点    程序员
231 条回复
d0m2o08
2020-06-03 16:50:09 +08:00
合理
hackingwu
2020-06-03 16:50:35 +08:00
@d0m2o08 合理的原因在哪里?
simapple
2020-06-03 16:50:46 +08:00
要是有大表 这样做 也许是合理的
sun1991
2020-06-03 16:51:01 +08:00
拿人钱财, 替人消灾. 想开点.
bokix
2020-06-03 16:53:44 +08:00
非常合理,现在很多企业开发规范都这么要求的
wujieyuan
2020-06-03 16:54:06 +08:00
完全禁止当然不好, 具体情况具体对待, 如果是表过于庞大 join 导致性能降低肯定是不行的, 大部分情况下 join 带来的方便肯定多多,所以需要测试,不能一刀切
cheng6563
2020-06-03 16:57:36 +08:00
那也没啥必要用 SQL 了吧
zjsxwc
2020-06-03 16:59:08 +08:00
无所谓了,不能 join 就数据库表加冗余字段,
反正数据一致性都是在代码里面保证联动的
zjsxwc
2020-06-03 17:00:09 +08:00
@zjsxwc 不过多对多这种,不 join 不行
reus
2020-06-03 17:00:39 +08:00
合理个屁,有些垃圾引擎,例如 mysql 5.7 及以前的,计划器低能,才让某些人把不要 join 当真理。
mysql 8,postgresql,sql server,oracle 都能很好地计划和优化 join 。
cnbattle
2020-06-03 17:02:32 +08:00
个人看法 : 合理,理由如下,服务器端的代码优化和 cpu 升级成本低, 数据库优化难度和升级成本高很多
xpresslink
2020-06-03 17:03:01 +08:00
合理。
mysql 这种数据库表处于百万级别后使用 join 查询导致性能毁灭级下降。
如果再上升的上千万条要分库分表,就更不能用 join 了。
总而言之,特别是大型分布式系统,数据库最好就当个底层纯数据存储用途,不要加载业务逻辑。
wysnylc
2020-06-03 17:03:10 +08:00
合理,join 和子查询性能而且无法跨库跨表
最好连事务都不用,分布式事务也是灾难,在业务中加锁以及用队列处理防止并发即可
PhpBestRubbish
2020-06-03 17:05:05 +08:00
我们以前公司技术老大是数据库大牛,他就喜欢整几百上千行的存储过程,不喜欢在项目种做逻辑处理,你要的数据数据库都给你处理好了
所以说什么规范是谁官大就听谁的,没有什么真正的规范
wo152
2020-06-03 17:09:30 +08:00
谁权利大,听谁的。
singerll
2020-06-03 17:14:18 +08:00
听说阿里的开发规范不允许使用 join,后来我们公司上了阿里的私有云,发现不是不允许,是分库分表根本就没法用,几十个库跨库 join 库和中间件一起炸。。。。。
huayumo
2020-06-03 17:17:06 +08:00
这玩意自己搞点测试数据跑一下就知道合理在哪里了,前段时间也在搞这玩意,分拆搞压力确实减轻不少,从一天会出现多次 cpu 跑满,到 cpu 没任何波动,10%左右,同百万数据,再多的没测试过
ebony0319
2020-06-03 17:18:01 +08:00
合理,项目大了。并发起来了就知道了。
huijiewei
2020-06-03 17:18:26 +08:00
都微服务了为啥要 JOIN ?

假的微服务?
SmiteChow
2020-06-03 17:20:29 +08:00
如果公司没有专职 dba,合理,复杂 SQL 审计优化是一门技术,大多数公司不会请 dba,所以把复杂度放置到应用层而不是存储层。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/678312

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX