我有這個功能,它從數據庫中獲取數據並且還具有搜索功能。問題是,當我使用實體框架進行搜索時,速度很慢,但如果我使用與日誌相同的查詢並在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。同樣,當你說緩慢有多慢你的意思。第二次是慢嗎? –