2017-10-30 17 views
0

処理に非常に時間がかかる(> 30秒)複数のJOINSを持つOracle DBに対するLINQ文があります。出力されたSQLを見ると、非常に奇妙に見え、多くのサブクエリが含まれています。私はこのステートメントを何らかの形で最適化する必要があると思っていますが、私はあまりよく分かりません。複数の結合を含むLINQ文は非常に遅い

var WRs = (from c in db.WR_CONTACT 
     join wr in db.WORK_REQUEST on c.WR_NO equals wr.WR_NO 
     join z in db.TASKS on wr.WR_NO equals z.WR_NO 
     join p in db.PEOPLE on z.RESPONSIBLE_PERSON_NO equals p.PERSON_NO 
     where p.USERID == key && (z.WR_TASK_NO == 1 || z.WR_TASK_NO == 2) 
      && wr.WR_CANCEL_DATE == null 
      && wr.ACCOUNTING_CLOSE_DATE == null 
     select c); 

私はOUTER JOINアプローチも試みましたが、パフォーマンスはそれほど向上しませんでした。私が考えることができるのは、これをやめて新しいSQLビューを作成することだけです。

+0

SQL Developerでも実行速度が遅いですか?あなたはFKのインデックスを持っていますか? –

+0

出力されたLINQクエリは、Oracleで実行するのに非常に時間がかかります – Nate23VT

+0

WR_NO、RESPONSIBLE_PERSON_NO、WR_TASK_NO、WR_CANCEL_DATEおよびACCOUNTING_CLOSE_DATEにインデックスがありますか? –

答えて

0

私たちは、そのビューにSQLビューとリンクエンティティを作成しました。最高の解決策ではありませんが、それは当社のタイムラインにとって最良の選択肢でした。

関連する問題