`
annan211
  • 浏览: 449483 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

oracle 删除有大量重复数据且数据量很大的表且该表存在主键被引用的情况下清除重复数据

阅读更多
1 先将需要保留的数据保存下来放入临时表 USERCOMPANYINFO_tmp

  
create table USERCOMPANYINFO_tmp as (
 select * from USERCOMPANYINFO where rowid not in (SELECT A.ROWID FROM USERCOMPANYINFO A,(SELECT MAX(A.ROWID) RROWID,COMPANY FROM USERCOMPANYINFO A GROUP BY A.COMPANY HAVING COUNT(*) > 3) B 
     WHERE A.COMPANY = B.COMPANY AND A.ROWID <> B.RROWID))


2 当表中的主键被其他表参照时,需要执行下面语句 不然会报错:
 
 ORA-02266: unique/primary keys in table referenced by enabled foreign keys
   ORA-02266: 表中的唯一/主键被启用的外部关键字引用


alter table USERCOMPANYINFO disable primary key cascade; //清除外部引用

 3 
 truncate table USERCOMPANYINFO;//清空数据
 
 4 
 insert into USERCOMPANYINFO select * from USERCOMPANYINFO_tmp; //蒋临时表中的数据倒入目标数据表
 5
 alter table USERCOMPANYINFO enable primary key; //给目标数据表添加主键约束
分享到:
评论

相关推荐

    oracle 数据按主键删除慢问题的解决方法

    根据表主键id删除一条数据,在PL/SQL上执行commit后执行时间都大于5秒。!!! 问题分析: 需求是删除一个主表A,另有两个附表建有此表的主键ID的外键。删除A表的数据级联删除另两个表的关联数据。增删改查使用...

    D:\Oracle大批量删除数据方法

    批量删除海量数据通常都是很复杂及缓慢的,方法也很多,但是通常的概念... 下面是删除过程,数据表可以通过主键删除,测试过Delete和For all两种方法,for all在这里并没有带来性能提高,所以仍然选择了批量直接删除。

    oracle的sql优化

     大数据量表尽量要避免全表扫描,全部扫描会按顺序每条记录扫描,对于&gt;100万数据表影响很大。  Oracle中通过RowID访问数据是最快的方式  对字段进行函数转换,或者前模糊查询都会导致无法应用索引而进行全表扫描 ...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    Access 微软 Access是一种桌面数据库,只适合数据量少的应用,在处理少量 数据和单机访问的数据库时是很好的,效率也很高 小型企业 三、 Oracle数据库概述 ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以...

    Oracle数据库设计策略及规范.docx

    索引对新增,删除,更新的性能影响比较大,对相关的表的索引使用要权衡 为表和索引建立不同的表空间,禁止在系统表空间中放入非核心oracle系统成分的对象, 确保数据表空间和索引表空间位于不同的磁盘磁盘驱动器上...

    oracle数据匹配merge into的实例详解

     很久之前,估计在2010年左右在使用Oralce,当时有个需求就是需要对两个表的数据进行匹配,这两个表的数据结构一致,一个是正式表,一个是临时表,这两表数据量还算是比较大几百M。业务需求是用临时表中的数据和...

    ORACLE之常用FAQ V1.0(整理)

    [Q] 如何有效的删除一个大表(extent数很多的表) 43 [Q]如何收缩临时数据文件的大小 43 [Q]怎么清理临时段 44 [Q]怎么样dump数据库内部结构,如上面显示的控制文件的结构 44 [Q]如何获得所有的事件代码 45 [Q]什么是...

    Oracle第三方工具pl\sql developer绿色中文版

    自己一直以来用PLSQL Developer,但有时候用起来还不是很方便,决定给自己量身订做一个,不仅可以管理数据库, &lt;br/&gt;而且还是一个学习oracle的好工具主要特点有: &lt;br/&gt; 1.本软件的框架风格布局美观大方,对象...

    Toad 使用快速入门

    在Oracle应用程序的开发过程中,访问数据库对象和编写SQL程序是一件乏味且耗费时间的工作,对数据库进行日常管理也是需要很多SQL脚本才能完成的。Quest Software为此提供了高效的Oracle应用开发工具-Toad(Tools of ...

    sql总结.doc

    处理大数据量时,效率低下,占用内存大 (6)什么时候选择使用游标? 一般是在循环处理的时候使用。 比如你判断一个班上的同学数学成绩怎么样,你就可能用游标,先把全部的成绩查询到游标中,之后再循环一条条进行...

    基于索引的SQL语句优化之降龙十八掌

    哪些表中的数据量可能很大;对于数据量大的表,其中各个字段的数据分布情况如何;等等。对于满足以上条件的这些表,必须重点关注,因为在这些表上的索引,将对SQL语句的性能产生举足轻重的影响。不过下面还是总结了...

    SQL性能优化

     SQL在运行时先取出数个查询的结果,再用排序空间进行排序删除重复的记录,最后返回结果集,如果表数据量大的话可能会导致用磁盘进行排序。  实际大部分应用中是不会产生重复的记录,推荐采用UNION ALL操作符...

    Oracle事例

    当指定时,如果父表中的记录被删除,则依赖于父表的记录也被删除 REFERENCE 表名() on delete cascade; 7、删除带约束的表 Drop table 表名 cascade constraints; 8:索引管理 &lt;1&gt;.creating function-based...

    动软.Net代码生成器2.41版

    主要实现在对应数据库中表的基类代码的自动生成,包括生成属性、添加、修改、删除、查询、存在性、Model类构造等基础代码片断,支持不同3种架构代码生成,使程序员可以节省大量机械录入的时间和重复劳动,而将精力...

    Java面试宝典2020修订版V1.0.1.doc

    29、如何优化大数据量的访问? 51 30、oracle怎么去除去重 51 31、合并查询有哪些? 51 32、SQL语句执行顺序 51 33、null的含义 52 34、mysql分页 52 35、MySQL、SqlServer、oracle写出字符存储、字符串转时间 52 36...

    SQL数据库设计.doc

    SQL Server 数据库设计 一、数据库设计的必要性 在实际的软件项目中,如果系统中需要存储的数据量比较大,需要设计的表比较多,表 与表之间的关系比较复杂,那我们就需要进行规范的数据库设置。如果不经过数据库的 ...

    动软.Net代码生成器

    Codematic生成的代码基于面向对象的思想和三层架构设计,可以直接生成三层架构的项目的代码,使程序员可以节省大量机械录入的时间和重复劳动,而将精力集中于核心业务逻辑的开发。 Codematic同时提供方便的多类型...

    LTP.Net代码自动生成器(DbToCode)

    DAL + BLL + Web 的设计,主要实现在 C# 中对应数据库中表的基类代码的自动生成,包括生成属性、添加、修改、删除、查询、存在性、 Model 类构造等基础代码片断,使程序员可以节省大量机械录入的时间和重复劳动,而...

    SQL培训第一期

    属性不依赖于其它非主属性,确保数据表中的每一列数据都和主键直接相关,而不能间接相关,即要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。 1.5.3.2 举例 党员表 党员Id 党员姓名 组织Code 符合3NF ...

    动软.Net代码生成器V2.41源码

    主要实现在对应数据库中表的基类代码的自动生成,包括生成属性、添加、修改、删除、查询、存在性、Model类构造等基础代码片断,支持不同3种架构代码生成,使程序员可以节省大量机械录入的时间和重复劳动,而将精力...

Global site tag (gtag.js) - Google Analytics