【问题标题】:EntityFramework include vs join performanceEntityFramework 包括 vs 连接性能
【发布时间】:2013-06-03 08:45:07
【问题描述】:
我想知道,在使用实体框架时,哪一个会产生更好的性能?
我了解到,如果您的实体之间存在外部关系,则最好使用包含而不是连接。
如果我只是检索来自 2 个不同实体(具有外键关系)的记录的 1 行,那么如果我使用 include over join 会有什么不同吗?
我取回的记录数量会影响连接和包含之间的性能吗?
【问题讨论】:
标签:
.net
entity-framework
join
entity
foreign-key-relationship
【解决方案1】:
我强烈建议你做一些profiling。
有时急切加载 (.Include) 很好,有时则不然;-)
只需查看分析器中生成的 T-SQL,您就会知道原因!看看执行计划。
尝试.Include查询中的一些一对多关系并查看将检索的数据量:数据将乘以所有包含表中的行数。大量重复数据可能会通过线路拉取,从而导致高带宽消耗和性能问题。
请记住,有时对相关数据执行简单快速的单独查询会更好(没有延迟加载)。查询可能更有效,比如说Customers,然后分别查询Orders,让EF自动加入它们。
根据我自己的经验,我拥有一支强大的 DBA 团队来查看 EF 生成的所有查询,我建议开发人员不要再使用 .Include ;-)