#提问# 经验 想问一下这个问题...的全部评论

#提问# 经验 想问一下这个问题...的全部评论
4个评论

对于这个问题,我建议你在不考虑其他优化层面的情况下,将拼装数据的压力放在代码层面,也就是在服务器端处理。理由如下:

  1. 数据库层面的查询和连接操作可能会引发额外的IO负载,可能会在数据量较大时导致性能下降。而在服务器端使用代码循环拼装数据,可以在内存中高效操作,减少IO负载。

  2. 循环拼装数据可能会导致性能损耗,但在你给出的情况下,主表50条,两张链接表一共20条,循环拼装100次,这个量级应该是可以接受的。而且,现代服务器一般都具备较好的计算能力,可以快速处理这种数量级的操作。...

2023-11-15
菜饼同学
C++后端

建议跑下数据,看看这 100 次循环操作大致的耗时。理论上这个量级的循环基本花不了几 ms,放后台处理就行了。但具体得看你这里业务上后续有无扩展性需求,查询的时延要求等等。简单来说就是往后看两步,不至于两个月后又要改动这个方案。

2023-11-15

你用 for 循环嵌套拼接数据实际上也是把压力放到数据库层了,其次每次跟数据库交互要创建连接,这个创建连接可能比查询还耗时,所以最好的操作应该是尽量减少连接的创建,也就是你说的写多表联查的sql会比较合理,另外问一句:用 for 循环查数据,给你做code review的人不会给你打回去吗[疑问]

2023-12-20
拾壹情
拾壹情
等级作者
:
不是的,你理解错了,我的意思是,第一种方案,发两条sql,返回两个集合数据,然后用这两个集合数据循环拼接数据,第二种方案,就是表链接的sql,这是我说的压力放在数据库和服务器层面
2023-12-20
程序员cq
噢噢噢,那我觉得第一种方案会好一些,因为联表查询可能会有很多坑
2023-12-20
拾壹情
拾壹情
等级作者
:
对,因为我这就只是要两张表的关联查询出来的结果,也没有业务的处理(只是在代码层面判断id.equas,然后放到一个新对象),所以我想区分普通链接查询和代码拼装更多应该怎么选
2023-12-20
拾壹情
拾壹情
等级作者
:
如果几张表查出来的数据更多有业务属性的操作的话,那我就放到代码层面,但如果只是多表(3张及以上)查询出来结果直接用的话,那我肯定直接写sql,因为没有业务属性嘛
2023-12-20

不过数据量不大的话,其实怎么做都是合理的,基本没啥感知,所以还是看你想怎么写了[咖啡],不过最好还是养成不在 for 循环里查数据的习惯

2023-12-20
拾壹情
拾壹情
等级作者
:
for循环里面查数据,这是要频繁的对数据库创建链接和关闭链接的,这种方案是万万不可的,直接闭掉,所以要么查一次,然后拼装,要么sql链接查询
2023-12-20
下载 APP