我们正在使用实体框架来查询 SQL Server 数据库。 LINQ 表达式是 IQueryable。该查询的执行时间大约为 10 秒。如果这是在存储过程中,我会使用查询来提高效率。但是,如果我使用 IQueryable,实体框架本身是否决定如何构建有效的查询,或者我是否必须使用 linq 表达式并通过反复试验来提高性能?
作为一名数据库开发人员而不是 C# 开发人员,并且对实体框架细节的了解非常有限,我可以说:
我的理解是实体框架决定如何构建查询,可能没有太多理解效率的能力。可能有some您可以在 Linq 查询或 Lambda 表达式中做得更好或更差,但在大多数情况下,您可能无法真正调整查询。这是使用 ORM 的一个主要缺点,至少从 DBA 的角度来看,他们在半夜被寻呼,当服务器爬行停止时,他们无法做任何事情来修复查询,这不像你总是可以只添加一个索引;-)。
我还可以说,您确实可以在实体框架中为每个 DML 操作指定一个存储过程,这样,如果您确实需要对这个特定查询做更好的事情,那么只需为这一个操作创建一个存储过程,然后将 EF 对象指向它以进行 SELECT,但允许 EF 构建 INSERT / UPDATE DELETE 查询。
这有帮助吗?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)