400万条记录中删除满足条件的200万条,怎样提高删除速度? 我用了4,5个小时还没有结果,哪位能提高删除速度? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 建一个临时表,把不满足条件的纪录插入到临时表,TRUNCATE原表,然后把临时表中的数据倒回。对于大表,这种方法最常用。 不赞成KingSunSha(弱水三千)的做法生成一个200万条数据的临时表不见得比删除要快。而且还要倒回来,到回来还不如将临时表改名成正式表,然后重建索引和依赖的过程和函数用exp/imp的方法是最好的选择,先用exp query='不满足的条件'备份。然后truncate表,然后将备份文件imp回去 drabit(square) 说的exp/imp也是一种办法,但是当query条件比较复杂的时候就不适用了。至于我说的方法,最近一直在使用。只要服务器不是太弱,在一个不带索引的表中插入几百万纪录其实是很快的,费时以分钟计。而delete的速度实在太慢,所以我基本上放弃了这种方法。 建一个临时表,把不满足条件的纪录插入到临时表,TRUNCATE原表,然后把临时表中的数据倒回。支持 KingSunSha(弱水三千) !!!!!!!! quote:<<但是当query条件比较复杂的时候就不适用了>>不明白你说的条件复杂是指什么?query在条件涉及3个表以上时才没有办法,这种情况下,临时表可能是最好的选择 頂一下.总的来说最后还是用truncate.就看你中间过程怎么做了. delete table where rownum<2001;commit;delete table where rownum<2001;commit;delete table where rownum<2001;commit;delete table where rownum<2001;commit;多拷贝几次.到sqlplus执行不就行了. 你试试在sql语句中加no logging,此时不记日志,无法回滚,请谨慎使用!!!!! qoute:<<你试试在sql语句中加no logging,此时不记日志,无法回滚,请谨慎使用!!!!!>>严重错误的说法!!! 用exp/imp的方法是最好的选择,先用exp query='不满足的条件'备份。然后truncate表,然后将备份文件imp回去drabit(square)的方法应该更好一些 KingSunSha(弱水三千) ( )的办法好,对大的表,我一般都这样干的,这是实践来的. 建一个临时表,把不满足条件的纪录插入到临时表,TRUNCATE原表,然后把临时表中的数据倒回。对于大表,这种方法最常用。呵呵,兄弟想法不错 KingSunSha(弱水三千)的方法可行。另外,提供一个办法,可以试试。在其它机器上建一个临时用的数据库;把要删除的表导出来,再导入临时用的数据库,在临时数据库中作以下操作:0. 根据delete 的条件建立合适的索引,删除其它没有用的索引和约束;1. 写一个过程删除若干条数据后提交;2. 删除完成后,删掉表的索引和约束关系;3. 导入原数据库;4. 重建索引和约束。 求高手帮忙解决oracle客户端与服务端字符集问题!感激啊! oracle创建job的问题 求一条SQL语句 一条记录拆分成多条插入 帮忙解决一个有问题的sql语句 grouping-rollup-ROW_NUMBER-over-PARTITION相关技术求助(第三贴) sql语句如何获取表的父节点? linux下oracle登录问题,急,请高手指教 下面这个语句如何优化?太慢太慢了。 高分求教一个存储过程式的写法 用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. 重建索引和约束。