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

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

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

33836 次点击
所在节点    程序员
231 条回复
Mac
2020-06-04 02:22:33 +08:00
面向大厂编程就是合理的,面向谈不上并发的小应用就是事儿逼
xuanbg
2020-06-04 02:56:54 +08:00
不 join 还用个吊毛的性能弱鸡的关系型数据库,直接上 MongoDB 不香吗?

如果业务需要关系模型来支撑的话,那就必须该 join 就 join 。如果查询语句 join 过多导致性能问题,应该反思的是数据结构是否合理,SQL 语句是否能够优化,该有的索引是否建立,而不是一刀切不许 join 。
kalok
2020-06-04 04:07:57 +08:00
不明白合理在哪裡,SQL 的精髓就是 join,以及 b-tree 。禁止 Left Join 似乎可以接受,因為會產生大量的 Null 。禁止 Inner Join 就不合理了。如果你們不要 join,那就玩 MongoDB 。還有,善用 explain analyze
msg7086
2020-06-04 04:32:12 +08:00
@love 应用服务器跑满了堆机器就行,数据库跑满了咋办?改用读写分离又要改一堆代码还要保证数据一致性,还不如省事让 ORM 把数据装配完得了。
jss
2020-06-04 08:11:34 +08:00
当你接触千万级别数据量你就知道了
hantsy
2020-06-04 08:32:27 +08:00
@yukiloh JPA 的 JPQL 生成的也是 SQL,有什么问题。
hantsy
2020-06-04 08:34:49 +08:00
不要局限 SQL 和 RDBMS,出了这个圈子,一个项目根据场景,还有很多 NoSQL 值得用,Redis,Mongo,Neo4j,ElasticSearch 等。

我是觉得到了 2020 年,现在一个项目还在用 纯 RDBMS 是不思议的。
stormsuncc
2020-06-04 08:35:56 +08:00
作为小白,我有个疑问,关系型数据库,多表查询 不使用 join,咋查
hantsy
2020-06-04 08:37:49 +08:00
回到主题,如果使用严格的数据关联,没有脏数据,Left Join 和 Inner join,Right join 用在外键关联上,它们有差别吗?
bsidb
2020-06-04 08:41:14 +08:00
你们的数据库是面向生产的在线数据库,主要是 OLTP 操作?这种情况不让在数据库端做 join 可以理解,万一 join 耗时太多或者资源太多,把数据库搞挂掉了,其他业务也跟着受影响。
如果是离线分析用的 OLAP,不让用 join 就很奇怪了。
wushigejiajia01
2020-06-04 08:57:14 +08:00
@PhpBestRubbish 老公司老项目大多是这样吧?

新项目,像现在的分布式项目还有人这样写?
wupher
2020-06-04 09:00:07 +08:00
不合理。

“怕 xx 所以就禁止 xx”其实是一种懒症,不合理的 Join 完全是可以通过每日慢查询识别出来的。

这就像不能因为有小朋友不幸被撞身亡,于是就全面禁止汽车一样。
john22eclipse
2020-06-04 09:00:26 +08:00
江湖规矩:微服务=单表查询 ❀☀
wushigejiajia01
2020-06-04 09:01:06 +08:00
@AngryPanda 你们微服务不分库的吗?
a308057848
2020-06-04 09:01:54 +08:00
不是合理不合理的问题, 这样能规避后期数据量大查询引起的问题,一开始就说好, 不是挺好的吗
ganbuliao
2020-06-04 09:06:26 +08:00
是你做错了,开发规范上写了不让用 join,那就是不让用 ,不用就好了,哪有那么多的问题??
passerbytiny
2020-06-04 09:07:14 +08:00
不让用在某些情况下合理,“规范”不让用,永远不合理。
hackingwu
2020-06-04 09:13:45 +08:00
@msg7086 数据库的从 不能有集群吗
sanggao
2020-06-04 09:14:34 +08:00
楼上赞成使用 join 的,都是白白的小白
hackingwu
2020-06-04 09:15:14 +08:00
@zjsxwc 如果字段不常变化,可以加冗余。也存在很多字段常变化的,如果冗余,就要多处更新

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

https://ex.noerr.eu.org/t/678312

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

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

© 2021 V2EX