这条sql语句如何进行调优,希望能运行快点

hymarx 2006-02-14 11:50:07
delete from chd_lang_cash_mov_name
where batch_id = 778 and (trans_num, cash_mov_num) in
(select trans_num, cash_mov_num
from chd_lang_cash_mov_name
where batch_id = 778
minus (select trans_num, cash_mov_num
from chd_current_acct_mov_load
where load_id = 621))

表结构
chd_lang_cash_mov_name(batch_id,trans_num,cash_mov_num)
chd_current_acct_mov_load(load_id,trans_num,cash_num)
说明
chd_current_acct_mov_load 表很大,load_id=621可以有300,000条纪录


...全文
143 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hymarx 2006-02-14
  • 打赏
  • 举报
回复
谢谢各位,在chd_lang_cash_mov_name 加index(batch_id,trans_num,cash_mov_load_num)
问题已经解决
cenlmmx 2006-02-14
  • 打赏
  • 举报
回复
如果能在两个表的连接列trans_num,cash_mov_num上建个索引,可能还会好些
cenlmmx 2006-02-14
  • 打赏
  • 举报
回复
呵呵,一模一样
cenlmmx 2006-02-14
  • 打赏
  • 举报
回复
delete from chd_lang_cash_mov_name a
where a.batch_id = 778 and not exists
(select 1 from chd_current_acct_mov_load b
where b.load_id = 621 and a.trans_num=b.trans_num ,
a.cash_mov_num=b.cash_mov_num)
boydgmx 2006-02-14
  • 打赏
  • 举报
回复
delete from chd_lang_cash_mov_name a
where a.batch_id = 778
and not exists(
select 1
from chd_current_acct_mov_load b
where b.load_id = 621
and a.trans_num=b.trans_num
and a.cash_mov_num=b.cash_mov_num
);
boydgmx 2006-02-14
  • 打赏
  • 举报
回复
cenlmmx 的语法都有问题,居然也蹭分??

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧