我有 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)
如果这没有帮助,请考虑在连接中使用的列上创建索引。
我有一个 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)
如果这没有帮助,请考虑在连接中使用的列上创建索引。