delete优化有关问题
delete优化问题请问下我现在有张千万级表现在要delete掉其中的300万,没有分区没有索引,那有什么可以优化执
delete优化问题 请问下我现在有张千万级表现在要delete掉其中的300万,没有分区没有索引,那有什么可以优化执行的方法吗? 除了添加io设备块的方法。[最优解释]
引用: 请问下我现在有张千万级表现在要delete掉其中的300万,没有分区没有索引,那有什么可以优化执行的方法吗? 除了添加io设备块的方法。 在回答一次
如果表未分区又有足够的磁盘空间,能否使用在线重定义的方法,把表转成分区表,然后把其中包含有300W左右的分区直接drop掉
[其他解释] create table temp as select * from 表 where 不想删的数据;
rename 表 to 其它;
rename temp to 表;
通过重命名的方法快点
[其他解释] 把所有数据分割为几小块进行处理,这样做的好处是及时做事务提交,不至于占用系统太多资源
delete 语句使用parallel并行,删除数据,同时注意回滚段空间和redo切换频率控制
[其他解释] 引用: create table temp as select * from 表 where 不想删的数据; rename 表 to 其它; rename temp to 表; 通过重命名的方法快点 这种方法给力!
开启并行度、控制事务单位
[其他解释] 引用: create table temp as select * from 表 where 不想删的数据; rename 表 to 其它; rename temp to 表; 通过重命名的方法快点 换做我也这么干,但是为了防止一些想不到的意外发生
如:原表上有一些其他东西,如外键,主键,索引,触发器等
可以换个方式:
建一个表把不想删除的数据拿出来,因为这样可以用到索引,速度较快
然后 truncate 原表
最后 把数据insert 回去。
[其他解释] 引用 如果表未分区又有足够的磁盘空间,能否使用在线重定义的方法 这个很好很强大正是我要的 谢啦 同是也谢谢各位给出的答案。