求高人帮优化一条sql
发布网友
发布时间:2022-04-13 11:00
我来回答
共2个回答
热心网友
时间:2022-04-13 12:29
改为这种关联查询,可读性强一些,效率也是最高的。 一般而言 in(not in) 子句的效率最差,exists(not exists) 效率较高,关联则是最高的。
改成这样试试:(其中v_bank_code、m_acc、v_substr_org_code
三个字段不清楚是哪个表的,最好在前面加上表的别名,减少差错)
select sum(t.curr_bal) into v_sum_p_bal
from tb_nb_acc_bal t join bank_acct_rela t1
on t.bank_code = v_bank_code and m_acc = t1.Pk_acct_rela
join t_fincmp_acct t2 on t1.cpf_acct_no = t2.pk_fincmp_acct
where substr(t2.cust_cd,1,2)=v_substr_org_code
请参考 “sql 调优整理”http://www.chinaunix.net/jh/19/214182.html 注意其中的第 18 ~ 20.
GoodLuck!
热心网友
时间:2022-04-13 13:47
select sum(t.curr_bal)
from tb_nb_acc_bal t
where t.bank_code = v_bank_code
and exists (select 1
from bank_acct_rela t1, t_fincmp_acct t2
where t1.cpf_acct_no = t2.pk_fincmp_acct
and substr(t2.cust_cd, 1, 2) = v_substr_org_code
and t1.Pk_acct_rela = t.m_acc)