私は次のクエリを持っています:
if (idUO > 0)
{
query = query.Where(b => b.Product.Center.UO.Id == idUO);
}
else if (dependencyId > 0)
{
query = query.Where(b => b.DependencyId == dependencyId );
}
else
{
var dependencyIds = dependencies.Select(d => d.Id).ToList();
query = query.Where(b => dependencyIds.Contains(b.DependencyId.Value));
}
[...] <- Other filters...
if (specialDateId != 0)
{
query = query.Where(b => b.SpecialDateId == specialDateId);
}
したがって、このクエリには他のフィルターがありますが、最後に、データベース内のクエリを次のように処理します。
return query.OrderBy(b => b.Date).Skip(20 * page).Take(20).ToList(); // the returned object is a Ticket object, that has 23 properties, 5 of them are relationships (FKs) and i fill 3 of these relationships with lazy loading
最初のにアクセスするpage
と、OK、クエリは1秒未満かかりますが、ページ30000にアクセスしようとすると、クエリに20秒以上かかります。linqクエリには、クエリのパフォーマンスを向上させる方法がありますか?それともデータベースレベルでのみですか?そして、データベースレベルでは、この種のクエリの場合、パフォーマンスを向上させるための最良の方法はどれですか?