有个问题挺纠结的

jsshizhanab 2014-09-19 11:57:24
一个列表查询有两种实现方案不知道那个更好一些
1,在循环中单表查询,这样可以省去大量的业务逻辑
2,批量一次性查询,这样有比较复杂的业务逻辑
应该用哪种方案?
...全文
224 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Norris_Zhang 2014-09-20
  • 打赏
  • 举报
回复
看你的访问量和每页显示数,假如每页显示30条,那就是显示一个这个页面,至少31条SQL发送给了数据库,看你在同一时间有多少访问量,如果访问数少,没有问题,如果每天上千万次访问,你算算一秒钟有多少人访问这个页面,数据库就是31倍的请求数,还不算高峰期的访问。 如果要优化的话,可以用连接查询,一条SQL语句,把两个表的数据都查出来,比如一个评论平均有10张图,30条评论就是300条数据一条SQL搞定,按评论排序出来,然后一个循环就把两个对象都组织好了。 select t1.*, t2.* from comment t1 left outer join pic t2 on t2.comment_id = t1.id where t1.xxx=xxx order by t1.update_time, t1.id desc limit 0, 30; 用左外连接,使得没有图片的评论也会被查出。 然后在循环里把t1.id一样的那些条记录都组织在一个Comment对象里,把相应的t2.*放进Pic对象里,add到Comment里的picList中。 有个问题,一定要先按update_time排,再按t1.id排,如果两条评论的update_time相同,两条评论的60条数据排序才不会乱掉。
kingofvc 2014-09-20
  • 打赏
  • 举报
回复
循环中进行数据库查询这种事情应该是尽量避免的 除非你可以100%确认性能不存在问题 假设你单个查询20ms 如果循环1000次 那就是20s 用户都已经开始砸电脑了。
jsshizhanab 2014-09-20
  • 打赏
  • 举报
回复
引用 10 楼 java51601053 的回复:
建议用第一种
我操 我刚改回来
java51601053 2014-09-20
  • 打赏
  • 举报
回复
建议用第一种
庚武讲堂 2014-09-20
  • 打赏
  • 举报
回复
要看你这个功能使用频率,如果不高,建议用第一种,老板会夸你做得又快又正确.
jsshizhanab 2014-09-20
  • 打赏
  • 举报
回复
引用 5 楼 fengmy11 的回复:
循环查询这种性能低下的事,你要是敢做,就有人敢扁你
好吧
静山晚风 2014-09-19
  • 打赏
  • 举报
回复
循环是用java完成sql的任务,越界了
gaofuqi 2014-09-19
  • 打赏
  • 举报
回复
我怎么觉得循环会更复杂。
windsunmoon 2014-09-19
  • 打赏
  • 举报
回复
建议第二种,第一种在循环中 单表查询,每次都是数据库操作,性能估计不行
jsshizhanab 2014-09-19
  • 打赏
  • 举报
回复
引用 6 楼 gaofuqi 的回复:
引用 4 楼 jsshizhanab 的回复:
[quote=引用 2 楼 gaofuqi 的回复:] 我怎么觉得循环会更复杂。
业务你都不知道 你就能猜出来循环更复杂
循环单表查询,每次查询的字段和表名怎么确认?之前查询的字段怎么保存?怎么和之前的字段关联?[/quote] 其实很简单,主要是我懒得打字说明白。 单表查询评论表,是个list。然后我要根据评论表里面的主键去查询和评论表相关联的图片表,评论表和图片表是一对多的关系, 评论的实体类里面有个图片的list,我需要把每条评论对应的一个或多个图片的URL字段查出来并且放在图片list中。 说的有点罗嗦,不知道你明白不? 如果是循环查询的话我在每次查询出的单条评论对象中直接将图片的list放到评论对象里面 但是如果我批量查询出所有的图片对象的话,我就需要拿图片对象中的评论ID和评论对象中的主键对比然后将对应的图片对象放到对应的评论对象里面去
gaofuqi 2014-09-19
  • 打赏
  • 举报
回复
引用 4 楼 jsshizhanab 的回复:
引用 2 楼 gaofuqi 的回复:
我怎么觉得循环会更复杂。
业务你都不知道 你就能猜出来循环更复杂
循环单表查询,每次查询的字段和表名怎么确认?之前查询的字段怎么保存?怎么和之前的字段关联?
风梦月 2014-09-19
  • 打赏
  • 举报
回复
循环查询这种性能低下的事,你要是敢做,就有人敢扁你
jsshizhanab 2014-09-19
  • 打赏
  • 举报
回复
引用 2 楼 gaofuqi 的回复:
我怎么觉得循环会更复杂。
业务你都不知道 你就能猜出来循环更复杂

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧