use*_*278 5 c# entity-framework
我在实体框架中放置条件的顺序是否重要?我知道 EF 在运行 SQL 查询之前做了一些优化。那么我首先提出什么条件重要吗?
例如(只是我们应用程序中真实查询的一个子集)。CaseNumber 是一个字符串,而 OrganizationId 是一个 guid。
context.Evaluation.Where(e => e.Case.CaseNumber.Contains(inputModel.CaseNumber) && e.Case.OrganizationId == inputModel.OrganizationId)
Run Code Online (Sandbox Code Playgroud)
或者
context.Evaluation.Where(e => e.Case.OrganizationId == inputModel.OrganizationId) && e.Case.CaseNumber.Contains(inputModel.CaseNumber)
Run Code Online (Sandbox Code Playgroud)
MS Sql 是高级 RDBMS,对于每个查询都有自己的执行计划,并为连续查询计划缓存,这就是它为您提供高性能的方式。
实体框架中使用的每个 lambda 表达式首先会转换为 sql 查询,然后由 sql profiler 进行优化,因此在 lambda 表达式中放置条件并不重要。
但是,如果您仍然没有获得所需的性能并且认为 sql 执行计划没有达到标准,您可以强制 sql 优化器使用您定义的执行计划。
你可以在这里阅读相关内容。你可以在堆栈溢出上遵循相同的方法
归档时间: |
|
查看次数: |
807 次 |
最近记录: |