一个sql实现过于复杂,写了一百多行,感觉过于复杂,目前想分成多个sql查询,使用java对数据进行操作,那种效率比较高呢?

踏破铁鞋无觅处 发布于 2018/08/06 09:13
阅读 1K+
收藏 0

我先描述一下我的问题,最近做一个功能

表1,表2 都是作为查询结果显示出现的(通过sql查询显示出来的,其中已经多次使用join了)

我如果想要将这二张表的结果数据整合起来,是继续在sql里面添加join语句好呢?(本人使用这种方法实现功能的,但是sql语句写了很长,感觉sql不简单明了,不易维护,也不知道真正出现高数据量的时候会出线什么情况)

还是使用java通过两次遍历,根据关键字id,将两张表的数据整合起来呢?(这样通过两次遍历会不会效率也会降低,因为查询结果也不一定只有这三行,将会遍历n*n次,总认为不如在sql加一句join实现效率高)

表1

表2

 

对于这种情况的整合,java有什么好的方法实现呢?

加载中
0
魔力猫
魔力猫

SQL复杂,可以通过视图、WITH进行简化。

你想改,首先要确认目前遇到的问题是什么。SQL复杂不利于维护?那么我推荐你可以尝试用视图和WITH语句,把大SQL分解为小SQL。如果又掺杂进性能问题,优化更是要更加慎重。

 

0
理工男海哥
理工男海哥

小系统、一两个人用爱怎么写就怎么写。

高并发系统,抱歉,我们不允许在sql中有join的行为。

sxgkwei
sxgkwei
回复 @masonFei : 咱俩讨论的不是一个问题?我觉得就是一个问题。缓存及缓存正确刷新问题,与sql写法中使用join的冲突性问题。
masonFei
masonFei
回复 @sxgkwei : 好像讨论的不是一个问题......
尚浩宇
尚浩宇
回复 @masonFei : 我遇到的高并发系统也是禁止join,但凡sql出现join这个字母,代码是提交不到SVN的,直接给拒绝了,
超然丶
超然丶
不用join?那你们的系统有点调哦
sxgkwei
sxgkwei
回复 @masonFei : 现在,采用人为定义过期时间的缓存策略已经不流行了,因为用户可见数据不能及时刷新,而自动化缓存框架则对join不能正确处理,每个缓存点手写的老方案,也因为代码量巨大low到爆。
下一页
0
喜欢自在
喜欢自在

你问错了的地方,这里的人都习惯用对象方式来操作数据库,会SQL语法的人很少或者水平很低!宁肯不要性能和简洁,也拒绝使用学习和使用SQL语法!

尚浩宇
尚浩宇
回复 @喜欢自在 : OSC里DBA也是有些的,喜欢研究sql的也是不少的,都潜水呢
关河
关河
呵呵,我就两个字,呵呵
喜欢自在
喜欢自在
回复 @freezingsky : 你别不服气,这里搞DB确是不行,太依赖框架对象了
f
freezingsky
你这回答,只代表你。
0
Joyzhou
Joyzhou

从项目管理的角度,可维护性更重要

0
OSC_HAFQvI
OSC_HAFQvI
合成一张表
返回顶部
顶部