我想知道,在使用实体框架时,哪一个会产生更好的性能?
我读过,如果你们之间有外来关系,那么最好使用include over join。
如果我只是从2个不同的entites(具有外键关系)检索1行,那么如果我使用include over join会有什么不同吗?
我正在取回的记录数量是否会影响join和include之间的性能?
答案 0 :(得分:6)
我强烈建议你做一些profiling。
有时候急切加载(.Include
)是好的,有时候不是;-)
只需查看分析器中生成的T-SQL,您就会知道原因!还要看一下执行计划。
尝试在查询中.Include
一些一对多关系,并查看将检索的数据量:数据将乘以所有包含的表中的行数。可能会在线路上拉出大量重复数据,从而导致高带宽消耗和性能问题。
请记住,有时候对相关数据执行简单快速的单独查询(没有延迟加载)会更好。查询可能更有效,让我们说Customers
然后分别查询Orders
并让EF自动加入它们。
根据我自己的经验,让一个强大的DBA团队查看EF生成的所有查询,我建议开发人员不再使用.Include
; - )