如何对如下的sql语句进行优化?

tyrbl 2008-04-22 02:57:21
如何对如下的sql语句进行优化?
DELETE FROM t_ic_student_detail d
WHERE EXISTS
(SELECT 'A'
FROM t_ic_student s
WHERE s.transaction_id = d.transaction_id AND
trunc(og.student_time,
'dd') < to_date('20080215', 'yyyymmdd'));

--T_IC_AUDIT_LOG
DELETE FROM t_ic_student s
WHERE trunc(s.log_time,'dd') < to_date('20080215', 'yyyymmdd');
说明: 1: 数据库是oracle
2:t_ic_student_detail 与t_ic_student 是子主表的关系
...全文
68 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
tyrbl 2008-04-23
  • 打赏
  • 举报
回复
不好意思og 是我写错了.
谢谢,不过这样还是要遍历整个 t_ic_student 表.
robin_ares 2008-04-22
  • 打赏
  • 举报
回复
你这样是内层每一条都和外层明细比一次,是乘积,当然慢
DELETE FROM t_ic_student_detail d
WHERE d.transaction_id in (SELECT transaction_id FROM t_ic_student s
WHERE trunc(og.student_time, --og是什么?
'dd') < to_date('20080215', 'yyyymmdd'));
mzhang_sh 2008-04-22
  • 打赏
  • 举报
回复
建立外键, 使能级联删除, 如果表空间是归档的, 添加with nolog, 我记得好像是delete with nolog from ....
rexyudl 2008-04-22
  • 打赏
  • 举报
回复
表结构!
主键,索引。
这都没有,咋玩?

17,078

社区成员

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

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