oracle truncate很慢,关于在Oracle上truncate table的相关总结

某些情况,需要清空某些大量数据的表,比如要重新部署一个新的系统,数据量在百万以上的表如果用delete清空会非常慢,这时候需要truncate table语句。

1. 用SQL语句查询出整个数据库中所有表的数据行数。select t.table_name,t.num_rows

from all_tables t

where t.num_rows is not null

order by num_rows desc;

结果大概是这样:

7cfba47a4ba7

2.  执行truncate table。truncate table T_MEDIAUSERLOG;

这是有可能会报错:SQL 错误: ORA-02266: 表中的唯一/主键被启用的外键引用

02266. 00000 -  "unique/primary keys in table referenced by enabled foreign keys"

3. 可以用SQL查询出指定表的主键被哪些表当成了外键。select a.constraint_type,a.status, 'alter table ',a.table_name, ' disable constraint ' , b.constraint_name ,';'

from user_constraints a

inner join user_cons_columns b on a.constraint_name = b.constraint_name

where a.r_constraint_name in

(select constraint_name from user_constraints e where e.table_name='T_COMMODITIES');

查询结果类似这样:

7cfba47a4ba7

4. 复制出选中的这些生成好的SQL语句执行,可以禁用约束,然后再次执行truncate table即可。table T_COMMODITIES已截断。

5. 如果需要,这些约束稍后再次启用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值