为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:达梦V8
【操作系统】:windows server
【CPU】:
【问题描述】*:从oracle迁移到达梦环境,sql查询很缓慢,exists子句中影响查询效率,请问有什么方式可以优化查询
sql语句:
select
p.apply_no,
p.dp_name,
p.apply_usage,
p.dep_pro_code,
p.dep_pro_name,
p.item_type_name,
p.pay_type_name,
p.total_approved_amount,
p.total_repayment_amount,
p.settlement_declaration_money,
p.payee_user_name,
p.payee_no,
p.digital_yuan,
p.submission_process,
p.bill_no,
p.process_status,
p.apply_id,
p.apply_flag,
p.is_emergency_pay,
p.bill_type,
p.req_id,
p.pay_money,
p.payee_bank_name,
p.rollback_reimbase
from
quota_pay_apply p
where
p.tenant_id = 1612
and p.year = 2025
and p.mof_div_code = '320501'
and p.rollback_reimbase = 0
and (p.input_user_code = '010101'
or (p.Agency_ID IN ('32001'))
AND (p.InAgency_ID IN ('32003', '34401', '32002', '46401', '44801', '32403')))
and ((1 = 1
and (exists (select
busi_id
from
gap_wf_tasklog t_
where
t_.table_code = 'QUOTA_PAY_APPLY'
and (t_.proc_id, t_.node_id) in ((2045728001, 9), (2045728001, 9), (2045726403, 2), (2045726403, 2), (2045726403, 2), (2045726403, 2))
and p.APPLY_ID = t_.busi_id
union
(select
busi_id
from
gap_wf_tasklog_his t_
where
t_.table_code = 'QUOTA_PAY_APPLY'
and (t_.proc_id, t_.node_id) in ((2045728001, 9), (2045728001, 9), (2045726403, 2), (2045726403, 2), (2045726403, 2), (2045726403, 2))
and p.APPLY_ID = t_.busi_id)
UNION
(select
busi_id
from
gap_wf_task t_
where
t_.table_code = 'QUOTA_PAY_APPLY'
and org_id = '1612'
and (t_.proc_id, t_.node_id) in ((2045728001, 9), (2045728001, 9), (2045726403, 2), (2045726403, 2), (2045726403, 2), (2045726403, 2))
and t_.mon_state = 0
and t_.outter_state = 0
and p.APPLY_ID = t_.busi_id)))))
order by
p.operate_time desc;
执行计划:执行计划1.txt