如何处理1+N问题
1+n问题是什么?
1+n是执行一次查询获取n条主数据后,由于关联引起的执行n次查询从数据;它带来了性能问题;同时也做了不必要的浪费
应该怎样解决?
懒加载 一般来说,通过懒加载 可以部分缓解1+n带来的性能问题,其中hibernate 有lazy策略
外链接
left join (select * from users u left join department d where u.department_id = d.id)
关于Rails中N+1查询
使用 includes
// 这样就在读取users的时候也一次性的把departments都取出了
User.all.includes(:departments)
生成的sql语句:
SELECT `users`.* FROM `users` ORDER BY `users`.`id` DESC SELECT `departments`.* FROM `departments` WHERE `departments`.`user_id` IN (2, 1) ORDER BY `plans`.`id` DESC