一个列表查询有两种实现方案不知道那个更好一些
1,在循环中单表查询,这样可以省去大量的业务逻辑
2,批量一次性查询,这样有比较复杂的业务逻辑
应该用哪种方案?
------解决思路----------------------
建议第二种,第一种在循环中 单表查询,每次都是数据库操作,性能估计不行
------解决思路----------------------
循环查询这种性能低下的事,你要是敢做,就有人敢扁你
------解决思路----------------------
看你的访问量和每页显示数,假如每页显示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条数据排序才不会乱掉。