我有这个功能,它从数据库中获取数据并且还具有搜索功能。问题是,当我使用实体框架进行搜索时,速度很慢,但如果我使用与日志相同的查询并在SSMS中使用它,则速度很快。我还必须说有一些电影,388262.我也尝试在电影中添加一个标题索引,但没有帮助。快速查询不搜索,搜索速度慢,但在SSMS中快速搜索
查询我在SSMS使用:
SELECT *
FROM Movie
WHERE title LIKE '%pirate%'
ORDER BY @@ROWCOUNT
OFFSET 0 ROWS FETCH NEXT 30 ROWS ONLY
实体代码(_movieRepository.GetAll()返回可查询不是所有电影):
public IActionResult Index(MovieIndexViewModel vm) {
IQueryable<Movie> query = _movieRepository.GetAll().AsNoTracking();
if (!string.IsNullOrWhiteSpace(vm.Search)) {
query = query.Where(m => m.title.ToLower().Contains(vm.Search.ToLower()));
}
vm.TotalItemCount = query.Count();
vm.Movies = query.Skip(_pageSize * (vm.Page - 1)).Take(_pageSize);
vm.PageSize = _pageSize;
return View(vm);
}
添加.AsNoTracking()不会使它更快。 –
当我删除'vm.TotalItemCount = query.Count();'它更快,但我需要找到的结果的计数,我怎么用LINQ来做到这一点? –
在ssms中,如果您使用工具,您是否拥有分析器。如果是这样,你可以旋转一个跟踪并发布生成的SQL。同样,当你说缓慢有多慢你的意思。第二次是慢吗? –