Oracle 11Gに接続するEF6(モデルファースト)を使用しています。Entity Frameworkのlinqクエリが遅すぎる
私は3つのテーブルA、B、Cを持っている、と私は関係を得るために右FKを定義した:
1. B is a child of A.
2. C is a child of B.
は今、私は(熱心なロードを使用して)次のコードを実行していると取得しますBとC:
私が見ることができるように、私はincludeとselectを使って、BをB、CをCで熱心に検索します。
私の問題は、FirstOrDefault()
メソッドを実行するのに約4秒かかります。
これをTOADでテストし、生成されたSQLを1秒未満で実行しました。
検索されたオブジェクト(Aが配置されている)はそれほど大きくはありません(Aは5 Bを持ち、Bは2 Cを持ち、各テーブルは〜10列です)。
パフォーマンスを向上させる方法はありますか?
テーブルにはいくつのレコードがありますか? –
これはアプリケーションが実行する最初のクエリですか? EFの最初のクエリには常に時間がかかります。ステートメントをもう一度実行してみてください。これははるかに速くなければなりません。 – Daniel
Aレコードは100レコードです。 Bには〜3000件のレコードがあります。 Cには〜1000件のレコードがあります。 結果は約20レコード(3つのテーブルすべてから)です。 これは最初の実行ではありません(私は2回実行しようとしましたが、まだパフォーマンスは悪くなっています) – Nir