表上某个字段(或某几个字段)有重复值,有需求要把重复记录删除,只保留一条....如果是小表,随便怎么折腾都行; 如果是大表(至少1千万条记录以上,或者占用10G以上空间), 我们可能需要想办法加快这个速度 , 这时可以参考下面方法:
要求:
删除t1表 object_name字段上的重复记录...先查表的总记录数和需要删除的重复记录数,dup_cnt就是需要删除的重复记录数:
--如果是多个字段去重,一起写到 group by 后面
select /*+ parallel(8) */...不会锁表.
2.如果需要删除的重复记录比较多,比如几十万以上,可以用下面方法:
delete /*+ enable_parallel_dml parallel(8) */
from t1
where...这个方法对删除少量重复记录也是可用的.