欢迎来到天天文库
浏览记录
ID:50967169
大小:32.03 KB
页数:2页
时间:2020-03-16
《oracle数据库删除重复记录语句.docx》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、COL1中有重复记录(COL1,COL2为主键),如何删除 1、有少数重复记录(在col1,col2上有索引比较好) DELETET WHERE(COL1,COL2)IN (SELECTCOL1,COL2FROMTGROUPBYCOL1,COL2HAVINGCOUNT(*)>1) AND ROWIDNOTIN (SELECTMIN(ROWID)FROMTGROUPBYCOL1,COL2HAVINGCOUNT(*)>1) 2、大部份记录有重复记录 DELETETWHEREROWIDNOTIN (SELECTMI
2、N(ROWID)FROMTGROUPBYCOL1,COL2) 3、其他写法 DELETETWHEREROWIDIN (SELECTA.ROWIDFROMTA,TB WHEREA.COL1=B.COL1ANDA.COL2=B.COL2ANDA.ROWID>B.ROWID) ###################################### 10.删除重复记录 最高效的删除重复记录方法(因为使用了ROWID) DELETEFROMEMPE WHEREE.ROWID>(SELECTMIN(X.R
3、OWID) FROMEMPX WHEREX.EMP_NO=E.EMP_NO); 11.用TRUNCATE替代DELETE 当删除表中的记录时,在通常情况下,回滚段(rollbacksegments)用来存放可以被恢复的信息.如果你没有COMMIT事务,ORACLE会将数据恢复到删除之前的状态(准确地说是 恢复到执行删除命令之前的状况) 而当运用TRUNCATE时,回滚段不再存放任何可被恢复的信息.当命令运行后,数据不能被恢复.因此很少的资源被调用,执行时间也会很短. (译者按:TRUNCATE只在删除全
4、表适用,TRUNCATE是DDL不是DML) 12.尽量多使用COMMIT 只要有可能,在程序中尽量多使用COMMIT,这样程序的性能得到提高,需求也会因为COMMIT所释放的资源而减少: COMMIT所释放的资源: a.回滚段上用于恢复数据的信息. b.被程序语句获得的锁 c.redologbuffer中的空间 d.ORACLE为管理上述3种资源中的内部花费
此文档下载收益归作者所有