`
jackroomage
  • 浏览: 1218025 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

oracle删除重复记录

阅读更多

删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录

  delete
      from tb_user_add_serv_fee a
     where a.register_id in (select t.register_id
                               from tb_user_add_serv_fee t
                              where t.ubill_month = '201007'
                              group by t.register_id, t.region_no
                             having count(1) > 1)
         
       and rowid not in (select min(rowid)
                           from tb_user_add_serv_fee t
                          where t.ubill_month = '201007'
                          group by t.register_id
                         having count(1) > 1)
       and a.ubill_month = '201007';

Oracle删除重复记录的最好的方法:
DELETE FROM EMP E WHERE E.ROWID > (SELECT MIN(y.ROWID)
FROM EMP y
WHERE y.EMPNO = E.EMPNO )

 

 

 

1、子查询找出某员工最低的ROWID(肯定只有一个),其它大于这条记录ROWID的,全部删除。

2、Oracle中使用ROWID删除重复记录最快,因为Rowid对应这条记录在磁盘上的位置

 

面试:性能优化

规则:SELECT子句中避免使用 ‘ * ‘
规则:使用 exists语句代替in语句;
            使用not exists代替not in
规则:使用truncate代替delete from 表语句
规则:减少访问数据库的次数
规则:减少访问数据库的次数
规则:使用表的别名(Alias)
规则:尽快使用COMMIT
规则:数据库冗余字段的设计
其它:Oracle与性能有关的几个特征(三个缓冲区)

面试:企业为什么经常使用Oracle? Oracle为什么这么牛?
回答:从三个缓冲区入手
一、日志缓冲区
·在添加一条记录时,数据库在后台同时也要记录一条日志
·Oracle 能够先将日志写在内存中,缓冲区满后再一次性写入磁盘
二、块缓冲区
·如果一个表(如部门表)很少更新但经常使用,那么可以将该表保存在内存中,从而避免频繁访问磁盘。
·访问内存的速度大于高于访问磁盘的速度。
三、SQL缓冲区
·数据库执行步骤:语法分析、语义分析、编译、优化……
·所以SQL在执行以前所消耗的时间是很长的
·Oracle数据库会将sql保存在SQL缓冲区,如果执行的是相同SQL,则无论执行多少次,都只会编译分析一次。从而减少分析和优化时
间。

 

 

 

 

应该还有另外几种方法,建张表自己测试一下。再总结一下。

分享到:
评论

相关推荐

    oracle删除重复记录性能分析

    ### Oracle删除重复记录性能分析 #### 一、背景与需求 在数据库管理中,经常会遇到数据清理的需求,尤其是在Oracle数据库中处理重复记录时。本文旨在通过对比几种不同的方法来删除Oracle中的重复记录,并分析其...

    oracle中如何删除重复的记录

    以上介绍了两种在Oracle数据库中删除重复记录的方法。第一种方法适用于数据量较小的情况,第二种方法则更适合处理大数据量的场景。实际应用时,可以根据具体情况选择合适的方法。需要注意的是,在进行删除操作之前...

    解决Oracle删除重复数据只留一条的方法详解

    查询及删除重复记录的SQL语句1、查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断select * from 表 where Id in (select Id from 表 group by Id having count(Id) > 1)2、删除表中多余的重复记录,...

    查询及删除重复记录的SQL语句.

    删除重复记录时,通常保留一个代表性的记录,例如保留 `ROWID` 最小的记录。可以使用以下 SQL 语句: ```sql DELETE from 表 WHERE (id) IN ( SELECT id FROM 表 GROUP BY id HAVING COUNT(id) > 1) AND ...

    wxh Oracle数据库删除重复记录的方法

    根据给定的文件标题、描述和部分内容,我们可以深入探讨Oracle数据库中删除重复记录的方法,这对于维护数据完整性和提高系统性能至关重要。以下将详细介绍几种在Oracle数据库中有效删除重复记录的技术。 ### 1. ...

    Oracle查询重复数据与删除重复记录方法(txt)

    ### Oracle查询重复数据与删除重复记录方法 在Oracle数据库中,有时我们需要找出并处理重复的数据。这不仅可以提高数据质量,还能提升查询效率。本文将详细介绍几种常用的查询和删除Oracle数据库中重复记录的方法。...

    Oracle查询重复数据并删除,只保留一条记录.docx

    接下来,我们可以使用 DELETE 语句来删除这些重复记录,但保留 rowid 最小的记录: ```sql delete from R_RESOURCE_DETAILS where (FIELD_CODE) in (select FIELD_CODE from R_RESOURCE_DETAILS group by FIELD_...

    Oracle查询重复数据与删除重复记录方法

    ### Oracle查询重复数据与删除重复记录方法 #### 一、查询重复数据 ##### 1. 使用ROWID方法 ROWID是Oracle中一个特殊的数据类型,它代表了表中每一条记录在物理存储上的唯一地址。利用ROWID可以非常高效地查询和...

    plsql删除重复记录

    在开始删除重复记录之前,首先需要确定哪些记录是重复的。以下SQL语句可以用来查询`test`表中所有字段都重复的记录: ```sql SELECT * FROM test GROUP BY name, age, sex, id, sf HAVING COUNT(*) > 1; ``` 这里...

    使用Oracle查询并删除重复记录的SQL语句

    使用Oracle查询并删除重复记录的SQL语句 在实际应用中,删除重复记录是非常常见的操作,特别是在数据导入、数据整合和数据清洁等场景中。Oracle数据库提供了多种方式来查询和删除重复记录,本文将详细介绍这些方法...

    Oracle数据库删除表中重复记录的方法三则.txt

    这种方法适用于仅需删除重复记录中的部分行,而保留至少一行的情况。通过比较不同记录的ROWID来确定哪些记录是重复的,并利用子查询找出这些重复记录的最大ROWID,然后将其删除。 **SQL示例代码:** ```sql DELETE...

    Oracle删除表中的重复数据

    ### Oracle删除表中的重复数据方法 在Oracle中删除表中的重复数据,可以采用多种策略,但通常涉及创建一个临时表来保存去重后的数据,然后用这个临时表覆盖原始表。这种方法可以避免直接修改原表带来的风险,确保...

    Oracle中查找和删除重复记录方法

    删除重复记录的方法原理:在Oracle中,每一条记录都有一个rowid,rowid在整个数据库中是唯一的,rowid确定了每条记录是在Oracle中的哪一个数据文件、块、行上。在重复的记录中,可能所有列的内容都相同,但rowid不会...

    删除数据表中重复记录

    本文将详细介绍如何在不同的数据库系统(如MySQL、SQL Server、Oracle等)中删除重复记录。 #### SQL删除重复记录的基本思路 删除重复记录的核心思想是先识别出哪些记录是重复的,然后通过某种方式将这些重复记录...

    oracle下如何删除重复数据的几种方法

    无论是部分字段重复还是完全重复的记录,都可以通过创建临时表的方式提高删除重复记录的效率。此外,在处理重复数据时,还应考虑到保留最新或最旧记录的需求,利用`ROWID`等特性可以轻松实现这一点。总之,合理地...

    oracle 删除去掉重复项

    若需要根据`peopleName`删除重复记录,可以使用类似的方法: ```sql DELETE FROM people WHERE peopleName IN (SELECT peopleName FROM people GROUP BY peopleName HAVING COUNT(peopleName) > 1) AND peopleId NOT...

    oracle查询重复数据方法

    这种方法可以根据 peopleId 字段来判断重复记录,并删除重复记录中除了 rowid 最小的记录以外的所有记录。 方法三:使用多个字段 第三种方法是使用多个字段来查询重复数据。例如,下面的语句可以查询出表中多余的...

Global site tag (gtag.js) - Google Analytics