私はデータベースからデータを取り出して検索するこの機能を持っています。問題は、Entityフレームワークで検索すると遅いですが、同じクエリを使用するとログから取得してSSMSで使用するのが速いことです。私はまた映画の割り当てがあると言う必要があります、388262。私はまた、映画のタイトルのインデックスを追加しようとしましたが、助けていませんでした。私はSSMSで使用検索は速く、検索は遅くSSMSの検索が高速です。
問合せ:
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をポストすることができます。また、あなたが遅いと言うときはどのくらい遅いことを意味します。 2回目と同じくらい遅いですか? –