如何优化 EF 查询?
How to optimize EF query?
我有一个查询 returns 31,000 条记录,但使用 EF 时速度很慢。我想优化这个查询。我应该如何优化它?
[HttpGet]
public IActionResult SearchInTaminJobs(string term)
{
var query = _context.TaminJobs.Where(Ad => Ad.jobName.Contains(term)).Select(c =>
c.jobName + c.jobCode).ToList();
return Ok(query);
}
我写的这个查询去检查所有数据库records.But现在我想要一个查询去获取与 jobName 相似的前 20 条记录的列表,而不是检查所有数据库记录
我相信这不是 EF 问题。在您的查询中,您使用 contains
和完整的 table 扫描,即您遍历所有记录,并针对每条记录检查 jobname
是否包含文本片段。由于它是 contains
检查,因此您不能仅在此列上建立索引。所以你的查询很慢。另外,您 return 很多记录,这也会对执行时间产生影响。在执行 contains
之前尝试添加更多过滤(通过一些索引 id
或类似的)。
确保您的查询速度较慢 运行 SSMS 中的这个原始 sql 查询:select jobName + jobCode from TaminJobs where jobName like '%YOUR_TERM_HERE%'
.
您还可以尝试限制将被 return 编辑的记录数:_context.TaminJobs.Where(Ad => Ad.jobName.Contains(term)).Take(20)
我有一个查询 returns 31,000 条记录,但使用 EF 时速度很慢。我想优化这个查询。我应该如何优化它?
[HttpGet]
public IActionResult SearchInTaminJobs(string term)
{
var query = _context.TaminJobs.Where(Ad => Ad.jobName.Contains(term)).Select(c =>
c.jobName + c.jobCode).ToList();
return Ok(query);
}
我写的这个查询去检查所有数据库records.But现在我想要一个查询去获取与 jobName 相似的前 20 条记录的列表,而不是检查所有数据库记录
我相信这不是 EF 问题。在您的查询中,您使用 contains
和完整的 table 扫描,即您遍历所有记录,并针对每条记录检查 jobname
是否包含文本片段。由于它是 contains
检查,因此您不能仅在此列上建立索引。所以你的查询很慢。另外,您 return 很多记录,这也会对执行时间产生影响。在执行 contains
之前尝试添加更多过滤(通过一些索引 id
或类似的)。
确保您的查询速度较慢 运行 SSMS 中的这个原始 sql 查询:select jobName + jobCode from TaminJobs where jobName like '%YOUR_TERM_HERE%'
.
您还可以尝试限制将被 return 编辑的记录数:_context.TaminJobs.Where(Ad => Ad.jobName.Contains(term)).Take(20)