EntityFramework包括vs join性能

时间:2013-06-07 06:10:58

标签: .net entity-framework join entity foreign-key-relationship

我想知道,在使用实体框架时,哪一个会产生更好的性能?

我读过,如果你们之间有外来关系,那么最好使用include over join。

如果我只是从2个不同的entites(具有外键关系)检索1行,那么如果我使用include over join会有什么不同吗?

我正在取回的记录数量是否会影响join和include之间的性能?

1 个答案:

答案 0 :(得分:6)

我强烈建议你做一些profiling

有时候急切加载(.Include)是好的,有时候不是;-) 只需查看分析器中生成的T-SQL,您就会知道原因!还要看一下执行计划。

尝试在查询中.Include一些一对多关系,并查看将检索的数据量:数据将乘以所有包含的表中的行数。可能会在线路上拉出大量重复数据,从而导致高带宽消耗和性能问题。

请记住,有时候对相关数据执行简单快速的单独查询(没有延迟加载)会更好。查询可能更有效,让我们说Customers然后分别查询Orders并让EF自动加入它们。

根据我自己的经验,让一个强大的DBA团队查看EF生成的所有查询,我建议开发人员不再使用.Include; - )