Fel*_*oto 12 sql linq nhibernate entity-framework lazy-loading
我听说很多关于延迟加载的性能问题,无论是在NHibernate,Linq ....
问题是N + 1选择.例如,我想要所有帖子及其用户,在foreach我懒惰加载用户,他们需要一个选择帖子,加上N选择每个用户.
延迟加载:
1 - select ....from post
N -select ....from user
"好"的方法是加入:
1 - select .....from post inner join user on post.UserId = user.Id
但是看到EF生成SQL,我意识到浪费了很多数据.想象一下,所有帖子都是同一个用户.内部联接将为每个帖子行带来所有用户列.
在性能方面,哪种方法最好?
Mic*_*dox 13
懒惰装载既不好也不坏.有关更长时间的解释,请参阅此处:
通常,延迟加载是ORM的一个很好的默认行为,但作为ORM用户,您需要注意何时要急切覆盖默认值和加载数据.分析应用程序的性能是决定使用延迟加载或不使用延迟加载的最佳方法.警惕在过早优化上花费太多精力.