3 つのサブクエリを使用して oracle sql を記述していますが、タイムアウトの問題が発生しています。修正に到達するための技術的な助けを期待しています。これが私のクエリです:
select DISTINCT E_reg.applicant_id,
E_REG.L_NAME,
E_REG.F_NAME,
E_REG.B_DATE,
E_REG.REG_DATE,
from E_REG,TRANSACTION
where E_REG.ID=TRANSACTION.PAR_ID
and TRANSACTION.BEGIN_DATE BETWEEN to_date ('01-APR-2012')AND to_date('30-JUN- 2012')
and e_reg.applicant_id NOT IN
(select applicant_id
from w_reg
where reg_date <'01-JUL-2012'
and exit_date is NULL or exit_date >='01-APR-2012'
or e_reg.applicant_id NOT IN
(select applicant_id
from t_reg
where reg_date <'01-JUL-2012'
and exit_date is NULL or exit_date>='01-APR-2012')
or e_reg.applicant_id NOT IN
(select applicant_id
from r_reg
where reg_date <'01-JUL-2012'
and o_attend IS NOT NULL
and term_date is NULL or term_date >='01-APR-2012')
基本的に、参加できるプログラムは 4 つ (e、w、t、r) あります。これらはすべて、基本的な参加者情報を格納する個別のテーブルです。同時に 4 つのプログラムすべてに参加している可能性があります。applicant_id が全員のキーになります。
トランザクション テーブルには、独自のトランザクション テーブルを持つ r プログラムではなく、その 3 つまたは 4 つのプログラムで受け取る可能性のあるサービスが格納されます。
時間枠にサービスがあったが、同時に他のどのプログラムにもサービスがなかった e テーブルの参加者のリストが必要です。これらは、e プログラムを通じてのみサービスが提供されます。今朝は動作しているように見えましたが、タイムアウトし始め、まったく実行されませんでした。サブクエリに違いないと思います。これを機能させるためのより良い方法があるかどうか疑問に思っています。