我有 Oracle Join 查询,它选择数据的速度非常慢

I have Oracle Join query that picks data very slow

我有一个 Oracle 连接查询,它选取数据的速度非常慢。这就像 1000 行 7 分钟。请您帮助以不同的方式编写代码,以便更快地提取数据。它的下一步是使用 Select 值并将数据转储到 MySQL table。我在这里使用 Pentaho 工具。谢谢

    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) 
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)

如果这没有帮助,请考虑在连接中使用的列上创建索引。