`
yhailj
  • 浏览: 35265 次
  • 性别: Icon_minigender_1
  • 来自: 浮云
文章分类
社区版块
存档分类
最新评论

oracle 删除重复数据

阅读更多

 

环境 :

SQL> SELECT * FROM V$VERSION;
 
BANNER
----------------------------------------------------------------
Oracle Database 10g Express Edition Release 10.2.0.1.0 - Product
PL/SQL Release 10.2.0.1.0 - Production
CORE	10.2.0.1.0	Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production

 

网上有很多的删除重复数据的 SQL 的例子. 有使用 GROUP BY HAVING 等, 还有一个 DISTINCT 关键字,这个可以忽略 .怎么可能会有数据完全相同的记录. 那单条数据怎么定位.难道靠 伪例 ?

CREATE TABLE TEMPTEMP (
   ID NUMBER,
   NAME VARCHAR2(20)
);
-- 生成重复数据
-- 0.297秒
DECLARE
BEGIN
FOR I IN 1..10000 LOOP
INSERT INTO TEMPTEMP VALUES (I, 'AAA' || I);
END LOOP;
END;
/
-- 0.015
DECLARE
BEGIN
FOR I IN 1..1000 LOOP
INSERT INTO TEMPTEMP VALUES (I, 'AAA' || I);
END LOOP;
END;
/
-- 0.031
DECLARE
TE INT;
BEGIN
FOR I IN 10001..11000 LOOP
TE := 1;
INSERT INTO TEMPTEMP VALUES (I, 'AAA' || TE);
TE := TE + 1;
END LOOP;
END;
/
SQL> select count(*) from temptemp;
 
  COUNT(*)
--------------
        12000

 建立索引

-- 0.015秒  建索引
CREATE INDEX INDEX_TEMP ON TEMPTEMP(ID, NAME);

我现在假定要将 两列数据相同的记录进行删除, 不考虑主键. 不使用临时表, 不考虑把数据从两个表导来导去

 

有两条 SQL ,我现在只想要效率 .比较了一下, 后者的效率似乎确实要快

只匹配 NAME 完全相等的记录

-- 0.047秒  2000 rows deleted 
DELETE FROM TEMPTEMP T1 WHERE T1.ROWID !=
(SELECT MAX(T2.ROWID) FROM TEMPTEMP T2
WHERE /*T1.ID = T2.ID AND*/ T1.NAME = T2.NAME);
-- 去掉 注释后 0.047秒  1000 rows deleted

 使用分析函数

-- 0.031秒  2000 rows deleted
DELETE FROM TEMPTEMP T1 WHERE T1.ROWID IN 
(SELECT RID FROM (SELECT ROWID RID, 
ROW_NUMBER() OVER (PARTITION BY /*ID,*/ NAME ORDER BY ROWID) RN 
FROM TEMPTEMP) WHERE RN != 1);
-- 去掉 ID 匹配后 0.031秒  1000 rows deleted

PS: 不知道是不是数据量太少还是表结构过于简单的原因 , 创了索引后 的效率 并不明显. 所需时间完全一样

 

Example 中的数据量确实很少. 也临到下班, 没有 过多的再去测试 效率 .若有人有更好效率更高的方法. 请教则个....

分享到:
评论

相关推荐

    ORACLE删除重复数据

    ORACLE 删除重复数据 在 ORACLE 数据库中,删除重复数据是一项常见的操作。重复数据的存在可能会导致数据不一致、查询效率下降等问题。今天,我们将介绍三种删除重复数据的方法,并对每种方法的执行时间进行比较。 ...

    ORACLE去除重复数据方法

    ### ORACLE去除重复数据方法 在数据库管理与维护过程中,数据重复问题是非常常见的现象,尤其在大型企业级应用中更是如此。重复数据不仅占用存储空间,还可能导致数据分析结果出现偏差,影响业务决策的准确性。因此...

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

    oracle 删除重复数据的几种方法 在 Oracle 中,删除重复的数据是一种常见的操作。delete 操作可以用来删除重复的数据,但是需要根据实际情况选择合适的方法。下面将介绍四种删除重复数据的方法,每种方法都有其优...

    oracle中如何删除重复数据

    在Oracle数据库中,删除重复数据是一项常见的数据清洗任务,尤其当表设计不当时,重复数据可能导致数据不一致和分析错误。以下将详细解释如何在Oracle中处理这两种类型的重复数据问题:部分字段重复和完全重复记录。...

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

    Oracle 查询重复数据并删除,只保留一条记录 Oracle 是一种关系型数据库管理系统,广泛应用于企业级数据库管理。然而,在实际应用中,数据重复问题经常会出现,例如在资源目录在线编目的资源项子表中存在多条重发...

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

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

    OracleSQL实例-删除重复数据行留最新日期实例.pdf

    在Oracle SQL中,删除重复数据并保留最新日期的实例是一个常见的数据清理任务,尤其是在具有历史记录或事务数据的数据库中。这个实例展示了如何通过SQL查询有效地处理这种情况。在这个例子中,我们有一个名为`abc`的...

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

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

    Oracle删除表中的重复数据

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

    oracle 查询重复数据

    - **数据清洗**: 发现重复数据后,下一步通常是进行数据清洗,包括合并重复记录、删除多余条目或修正数据录入错误。 - **预防机制**: 在数据录入阶段实施数据验证规则,使用触发器或存储过程自动检测并防止重复数据...

    oracle删除重复数据方法

    Oracle 数据库中删除重复数据的方法是一项常见的数据清洗任务,尤其在大数据量的环境中,确保数据的唯一性和准确性至关重要。以下是一些针对不同情况的 Oracle SQL 语句,用于查找和删除重复数据: 1. **根据单个...

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

    ### Oracle 下删除重复数据的方法及分析 #### 一、部分字段重复数据的处理 ##### 查询重复数据 在Oracle数据库中,经常会遇到表中存在部分字段重复的情况。为了找到这些重复的记录,我们可以使用以下SQL语句: `...

    oracle删除重复数据的sql语句

    根据给定文件中的标题、描述、标签以及部分内容,本文将详细介绍在Oracle数据库中删除重复数据的几种方法。这些方法利用了ROWID、GROUP BY、DISTINCT等关键字来实现数据去重的功能。 ### 1. 使用ROWID进行去重 ...

    oracle删除重复记录性能分析

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

    oracle查询重复数据方法

    Oracle 查询重复数据方法是数据库管理中非常重要的一个问题, Oracle 数据库提供了多种方法来查询和删除重复数据。下面我们将详细介绍几种常见的方法。 方法一:使用 Having 子句 第一种方法是使用 Having 子句来...

    如何高效删除Oracle数据库中的重复数据

    ### 如何高效删除Oracle数据库中的重复数据 在Oracle数据库管理中,经常会出现因各种原因导致的数据重复问题。这些重复数据不仅占用存储空间、降低查询效率,还可能导致数据分析时出现错误的结果。因此,学会如何...

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

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

    删除重复数据的一种高效的方法(oracle)

    在Oracle数据库管理中,删除重复数据是一个常见的需求,特别是在数据清洗和优化数据库性能时。本文将探讨三种不同的方法来高效地删除`demo`表中的重复数据,并分析它们的执行时间和适用场景。 方法一: 该方法基于...

    oracle数据库各种删除重复数据方法

    ### Oracle数据库删除重复数据的方法 在Oracle数据库管理中,处理重复数据是一项常见且重要的任务。重复数据不仅会占用额外的存储空间,还可能导致数据分析时出现偏差。因此,掌握如何有效地识别并删除这些重复记录...

Global site tag (gtag.js) - Google Analytics