我用了4,5个小时还没有结果,哪位能提高删除速度?
解决方案 »
- pl/sql developer中用execute调用存储过程弹出‘无效的sql语句’……
- 32位 win7 装了oracle客户端 Net Configuration Assistant没反应
- 如何避免oracle集群重启服务器
- XP 安装oracle 10g 时 出现“无法确定主机IP地址”异常
- oracle统计行转列的问题
- 数据库的外连接问题
- 对大表进行排序,如何提高查询速度?
- oracle 企业管理器服务打不开.
- oracle 达到高水位delete语句后在同一对象上insert
- 关于数据库触发事件的问题
- 用wrap加密过形成的 .plb 文件怎么样解密 让它变为可见的。
- oracle 如何做行列动态的交叉表
用exp/imp的方法是最好的选择,先用exp query='不满足的条件'备份。然后truncate表,然后将备份文件imp回去
支持 KingSunSha(弱水三千) !!!!!!!!
query在条件涉及3个表以上时才没有办法,这种情况下,临时表可能是最好的选择
总的来说最后还是用truncate.
就看你中间过程怎么做了.
commit;
delete table where rownum<2001;
commit;
delete table where rownum<2001;
commit;
delete table where rownum<2001;
commit;
多拷贝几次.到sqlplus执行不就行了.
用exp/imp的方法是最好的选择,先用exp query='不满足的条件'备份。然后truncate表,然后将备份文件imp回去drabit(square)的方法应该更好一些
把要删除的表导出来,再导入临时用的数据库,在临时数据库中作以下操作:
0. 根据delete 的条件建立合适的索引,删除其它没有用的索引和约束;
1. 写一个过程删除若干条数据后提交;
2. 删除完成后,删掉表的索引和约束关系;
3. 导入原数据库;
4. 重建索引和约束。