正しい結果が得られるこのクエリがありますが、実行に約 15 秒かかります
int Count= P.Pets.Where(c => !P.Pets.Where(a => a.IsOwned == true)
.Select(a => a.OwnerName).Contains(c.OwnerName) && c.CreatedDate >=
EntityFunctions.AddDays(DateTime.Now, -8)).GroupBy(b=>b.OwnerName).Count();
linq のこの部分を削除すると
'&& c.CreatedDate >= EntityFunctions.AddHours(DateTime.Now, -8)'
実行にかかる時間はわずか 3 秒です。どうすれば同じ状態を維持できますが、はるかに高速になりますか? 8 日前に作成されたクラスをカウントに含めたくないので、その日付基準が必要です
編集
このクエリで P と呼ばれる People という名前のテーブルがあり、所有者を持たないペットの総数を返し、そうでないものをクエリから削除したいそれらが別のペット参照に存在する場合でも所有者を持ち、そのペットの所有者を持っていません。Pets テーブルにペットの所有者と見なされるレコードが少なくとも 1 つある場合、その人が返されるクエリに存在するすべてのケースを削除し、それが完了すると、作成されたペットのみを返すことを意味します。 8 日より新しい