大きなテーブル(1mレコード)でLinqクエリを実行して、他の小さなテーブルに結合する必要があるこの問題があります。クエリの実行には時間がかかり、時にはExecution Timeout Expired
で終了します。実行時間を短縮するためにクエリを改善する方法がわかりません。EF Linqクエリパフォーマンスを向上させる
var result = from p in db.population
join e in db.engineers on p.id equals e.personId into ps
from e in ps.DefaultIfEmpty()
where (e == null || e.activity == "student")
select p.name;
var final result = result.Take(100).ToList();
は基本的に私は、エンジニア、学生は除外されている技術者ではありませんdb.population
から最初の100人を取得したいです。
パフォーマンスを改善するためのより良い方法でクエリを記述できるかどうか不安ですか?
に参加してみこれが正しいのですか? FKとして主キーを使用していますか? – Andrei
はタイプミスであり、今修正されました – Oysio
'Any()'を使ってクエリを再構成しようとします( 'join'の代わりにナビゲーションプロパティを使います)。 –