循环是用java完成sql的任务,越界了

解决方案 »

  1.   

    循环单表查询,每次查询的字段和表名怎么确认?之前查询的字段怎么保存?怎么和之前的字段关联?
    其实很简单,主要是我懒得打字说明白。
    单表查询评论表,是个list。然后我要根据评论表里面的主键去查询和评论表相关联的图片表,评论表和图片表是一对多的关系,
    评论的实体类里面有个图片的list,我需要把每条评论对应的一个或多个图片的URL字段查出来并且放在图片list中。
    说的有点罗嗦,不知道你明白不?
    如果是循环查询的话我在每次查询出的单条评论对象中直接将图片的list放到评论对象里面
    但是如果我批量查询出所有的图片对象的话,我就需要拿图片对象中的评论ID和评论对象中的主键对比然后将对应的图片对象放到对应的评论对象里面去
      

  2.   

    循环中进行数据库查询这种事情应该是尽量避免的 除非你可以100%确认性能不存在问题 
    假设你单个查询20ms  如果循环1000次 那就是20s   用户都已经开始砸电脑了。
      

  3.   

    看你的访问量和每页显示数,假如每页显示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条数据排序才不会乱掉。