2016-12-05 4 views
0

データを非常に遅く選択するOracleの結合クエリがあります。それは1000行のような7分です。別の方法でコードを記述すると、データがより速く抽出されます。次のステップは、[値を選択してMySQLにデータをダンプする]テーブルを使用することです。私はペンタホ道具をここで使用しています。おかげデータを非常に遅く選択するOracle Joinクエリがあります

select 
null id, 
ss.ILOAN_CODE , 
ss.INST_NUM , 
ss.INST_AMT , 
ss.INST_PRINCIPAL , 
ss.INST_INTEREST , 
ss.BALANCE_PRINCIPAL , 
ss.INST_DUE_DATE , 
ss.PAID_FLAG , 
ss.LATE_FEE , 
ss.PAYMENT_DATE , 
ss.INST_AMT_PAID , 
ss.INST_AMT_DUE , 
ss.REV_CHECK_NUM , 
ss.REV_CHECK_AMT , 
ss.CREATED_BY , 
ss.DATE_CREATED , 
ss.UPDATED_BY , 
ss.DATE_UPDATED , 
ss.INST_DAYS , 
ss.MATURED_INTEREST , 
ss.UNPAID_INTEREST , 
ss.ADJ_INST_PRINCIPAL , 
ss.ADJ_INST_AMT , 
ss.ADJ_INST_INTEREST , 
ss.ADJ_BALANCE_PRINCIPAL , 
ss.ADJ_MATURED_INTEREST , 
ss.ADJ_UNPAID_INTEREST , 
ss.IS_PRINTED , 
ss.RTN_FEE_AMT , 
ss.WAIVE_FEE_AMT , 
ss.LATE_FEE_AMT , 
ss.APR_BALANCE_PRINCIPAL , 
ss.ACHDEPOSIT_DATE , 
ss.ACHRETURN_DATE , 
ss.ACHCLEAR_DATE , 
ss.APR_INST_INTEREST , 
ss.APR_UNPAID_INTEREST , 
ss.CSO_FEE , 
ss.MATURED_CSO_FEE , 
ss.UNPAID_CSO_FEE , 
ss.CSO_FEE_BALANCE 
from ST_IL_SCHEDULE ss, 
    ST_IL_MASTER sm, 
    BO_MASTER bm 
where sm.iloan_code = ss.iloan_code 
    and sm.bo_code = bm.bo_code 
    and ss.ILOAN_CODE in (select distinct loan_Number from SVP_LOAN_MASTER_INVENTORY) 
+0

テーブルにはどのようなインデックスがありますか? –

+0

こんにちはブライアン、ユニークでないインデックスがあります –

+0

投稿してください。 –

答えて

2
and ss.ILOAN_CODE in (select distinct loan_Number from SVP_LOAN_MASTER_INVENTORY) 

これは、低速であるための候補です。 distinctは必要ありません。また、明示的な結合を使用して読みやすくしてください。

試してみてください。

Select 
null id, 
ss.ILOAN_CODE , 
ss.INST_NUM , 
ss.INST_AMT , 
ss.INST_PRINCIPAL , 
ss.INST_INTEREST , 
ss.BALANCE_PRINCIPAL , 
ss.INST_DUE_DATE , 
ss.PAID_FLAG , 
ss.LATE_FEE , 
ss.PAYMENT_DATE , 
ss.INST_AMT_PAID , 
ss.INST_AMT_DUE , 
ss.REV_CHECK_NUM , 
ss.REV_CHECK_AMT , 
ss.CREATED_BY , 
ss.DATE_CREATED , 
ss.UPDATED_BY , 
ss.DATE_UPDATED , 
ss.INST_DAYS , 
ss.MATURED_INTEREST , 
ss.UNPAID_INTEREST , 
ss.ADJ_INST_PRINCIPAL , 
ss.ADJ_INST_AMT , 
ss.ADJ_INST_INTEREST , 
ss.ADJ_BALANCE_PRINCIPAL , 
ss.ADJ_MATURED_INTEREST , 
ss.ADJ_UNPAID_INTEREST , 
ss.IS_PRINTED , 
ss.RTN_FEE_AMT , 
ss.WAIVE_FEE_AMT , 
ss.LATE_FEE_AMT , 
ss.APR_BALANCE_PRINCIPAL , 
ss.ACHDEPOSIT_DATE , 
ss.ACHRETURN_DATE , 
ss.ACHCLEAR_DATE , 
ss.APR_INST_INTEREST , 
ss.APR_UNPAID_INTEREST , 
ss.CSO_FEE , 
ss.MATURED_CSO_FEE , 
ss.UNPAID_CSO_FEE , 
ss.CSO_FEE_BALANCE 
from ST_IL_SCHEDULE ss, 
    inner join ST_IL_MASTER sm on (sm.iloan_code = ss.iloan_code) 
    inner join BO_MASTER bm on (sm.bo_code = bm.bo_code) 
    inner join SVP_LOAN_MASTER_INVENTORY slm on (ss.loan_code = slm.loan number) 

それは参加で使用される列に索引を作成することを検討してください助けていない場合。

+0

こんにちはKacper、ありがとう、それは私にデータをより速く与える。私が得たデータが生産に完全に一致しているかどうかを調べるためにテストしています。 –

+0

@ user2148257クエリはあなたのものとまったく同じですが、常にチェックする価値があります。がんばろう。 – Kacper

+0

こんにちはKacper、私はpentahoでコードをテストしていると、クエリを読み取るのに時間がかかりますが、あなたと同じメソッドを実装しました(内部結合と削除別名)それは他のクエリに最適です。しかし、この特定のテーブルでは動作しません。他の方法でそれを変更できますか?助けてください。ありがとう –

関連する問題