Java 遍历 list<map> 实现 left join 快,还是 MySQL left join 速度快

2021-12-16 18:23:37 +08:00
 djs19920210
从 mysql 数据库中读出 a,b 表,得到两个 list<bean> listA,listB,对这两个 list 做遍历实现 left join,
还是直接 sql 语句 left join 从 mysql 中查询等到结果集,
在表数据很大的情况下,这里两种方式,哪种快
3742 次点击
所在节点    程序员
25 条回复
unco020511
2021-12-17 10:08:00 +08:00
肯定是数据库啊
dqzcwxb
2021-12-17 10:27:00 +08:00
用 hashMap 做数据拼接解决双重循环的笛卡尔积
liaojl
2021-12-17 12:17:45 +08:00
在表结构、索引设计合理的情况下,你 Java 里怎么遍历都干不过 db ,毕竟 db 是专门干这个的。表数据很大的情况下,Java 里遍历还要考虑内存和 CPU 负载的问题。
Nich0la5
2021-12-17 14:36:51 +08:00
一般数据库快,能在数据库过滤的尽量在数据库层面操作,而且读那么大个 list 不怕 oom 吗
msg7086
2021-12-17 18:23:10 +08:00
看具体情况。
如果你访问量很大,单台 DB 压力大,那么把一部分压力转嫁到 app server 是一种可行的方案。
但是如果你 DB 压力不那么大,表连接当然速度更快。
(另外有一个常见的做法是先查出表外键然后再在第二张表上做 IN()拿到过滤数据,再合并结果。)

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

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

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

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

© 2021 V2EX