`
eyes_on_you
  • 浏览: 21283 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

数据库中其中的一个表删除数据的时候特别慢

 
阅读更多

表中一共只有2000多条数据,我的删除语句是delete from jx1114 where xnxqh='2011-2012-2'
这个删除只要删除80多条数据,但是却执行了将近3分钟的时间,这张表引用了其他一个表的主键作为外键。

 

删除表记录非常慢有好几个原因:


1.机器性能问题,cpu被其他进程占用。这种方式最好解决,在进程管理器中关掉几个进程,释放出cpu用于处理删除记录操作;


2.sql语句本身优化,使用exists或者not exists比用“=”来的快;


3.表的关联关系影响了删除的速度。如果目标表和其它表建立了关联关系过多也会造成处理效率下降问题。如A表的和B表建立外关联的话,而B表又是一张很大的表,删除A表的记录时oracle执行过程是先在A表中选中一条记录进入待删除区,然后进行关联关系分析的,就是对B表进行全表查询一遍。同理如果A表和其它表 也有关联的话相同的查询也会在其它表中执行查询,等所有关联表查询完成确定没有引用关系的话,A表中选中记录会被打一个可以删除的标记,然后执行A表下一条的查询工作。值得注意的是被标记为可删除标记的记录不是立刻被删除的,删除操作一直要等到A表符合删除记录全部被打成可删除标记,删除操作才会被执行。如果有一条没有被标记成可删除标识的话,oracle 数据库会根据你设置给出相应的处理。


4.表与表引用关系存储在系统表dba_constraints 中,要有dba权限才能够执行的。查询语句如下:注意要更换'TableName':
select owner,constraint_name,CONSTRAINT_TYPE,TABLE_NAME
from dba_constraints
where r_constraint_name in (select CONSTRAINT_NAME from dba_constraints where table_name='TableName');
如果这个还不能解决问题的话。还有更复杂的办法。


5.使用oralce自带10046 的trace。该方法使用方法需要谨慎的,随用随关的。启用当前session的跟踪:
SQL> alter session set sql_trace=true; -- 开启trace
Session altered.

此时的SQL操作将被跟踪:
SQL> select count(*) from dba_users;

COUNT(*)
----------
34
结束跟踪:
SQL> alter session set sql_trace=false; --关闭trace

Session altered.

分享到:
评论

相关推荐

    SQL数据库原理与设计

    此外,课程中可能涵盖了数据库的规范化,这是一个优化数据库设计的过程,通过消除冗余和依赖,以提高数据的完整性并降低数据更新的复杂性。这涉及到分解表、确定函数依赖和多值依赖等概念。 在数据库设计中,索引的...

    数据库索引

    假设有一个名为`T`的表,包含7条记录,表结构存储在`t.frm`文件中,数据存储在`t.ibd`文件中。表的结构和数据如下: - **聚集索引结构**:查询速度最快,只需两次I/O操作。 - **非聚集索引结构(a字段)**:对于...

    书店数据库.zip

    数据库在IT行业中扮演着至关重要的角色,特别是在零售业如书店这样的场景中。数据库用于存储、组织和检索大量的信息,使得数据管理更加高效。以下是可能包含在该压缩包中的关键知识点: 1. **数据库管理系统(DBMS)*...

    ETL数据同步问题.doc

    在该方案中,会建立一个日志数据库,用于记录每个数据库中每个表的每一条进行过增删改的记录的 ID。ETL 定时扫描该表的记录,处理的记录则进行删除,处理失败的则将该条记录的所有信息通过 Email 的方式发到具体邮箱...

    mysql数据库备份

    本文将深入探讨MySQL数据库的备份方法,特别是通过`mysqldump`工具进行的备份,以及备份脚本中的关键步骤,包括备份、删除和压缩。 `mysqldump`是MySQL官方提供的一个实用程序,用于导出数据库结构和数据。这个...

    DBA必备 数据库设计优化完美攻略

    这三个范式是数据库逻辑设计的基本要求,其中第三范式是大多数表设计的标准。规范化的数据库设计有助于减少数据冗余和提高查询效率。 合理的冗余设计也是数据库设计中不可忽视的一环。虽然规范化的数据库设计减少了...

    Oracle中大批量删除数据的方法

    * 删除速度:在删除大量数据时,删除速度可能会变慢,特别是在亿级数据库中。 四、优化删除速度 如果您需要删除大量数据,您可以尝试以下方法来优化删除速度: * 使用并行删除:可以使用 Oracle 的并行删除功能...

    shunxubiao.zip_链表的合并_顺序表

    顺序表的一个显著特点是访问元素速度快,因为元素的位置可以通过索引直接计算出来,但插入和删除操作可能涉及大量的数据移动,效率相对较低。 接下来,我们讨论链表。链表与顺序表不同,它的元素在内存中不一定连续...

    SQL Server提高数据库还原的速度

    2. **性能对比**:例如,在一项测试中,还原一个20GB数据和5GB事务日志的数据库,使用PVMT权限的耗时为1分1秒,而未使用的耗时为5分5秒。这一对比清晰地展示了该权限的价值所在。 #### 如何检查是否启用PVMT权限 ...

    数据结构:八大数据结构分类及图解.pdf

    2. **栈**:栈是一种后进先出(LIFO)的数据结构,类似于一个只能在一端操作的容器。栈常用于实现递归、回溯算法等,如计算斐波那契数列。栈的插入和删除操作(入栈和出栈)非常快,但查找效率较低。 3. **队列**:...

    SQL 数据库 优化

    一个表只能拥有一个聚集索引,因为表中的数据只能按照一种特定的方式进行排序。例如,在字典中,正文内容本身就是按照字母顺序排列的,这就是一种聚集索引的应用实例。 - **非聚集索引**:与聚集索引不同,非聚集...

    数据库索引的利弊.txt

    假设有一个包含大量记录的表`Tablet`,其中有两列`Columna`和`Columnb`。我们经常需要根据`Columna`来查询数据,并且希望查询速度尽可能快。在这种情况下,建立一个基于`Columna`的索引将是十分必要的。 - **优点:...

    数据结构 DataStructure(单链表和循环双链表)

    **单链表** 是一种线性数据结构,其中每个元素(称为节点)包含两部分:数据和指向下一个节点的引用(或称为指针)。这种结构允许我们在内存中动态地添加或删除元素,而不需要预先确定数组的大小。单链表的优点在于...

    一份很好的讲解数据结构的PPT

    6. **哈希表**:哈希表通过哈希函数将数据映射到一个固定大小的数组中,实现快速查找、插入和删除操作。哈希冲突是其主要挑战,解决方法包括开放寻址法和链地址法。 7. **二叉树**:二叉树每个节点最多有两个子节点...

    所有数据结构flash演示动画

    2. **链表**:链表中的元素在内存中不是连续存储的,每个元素(节点)包含数据以及指向下一个节点的引用。链表更适合频繁的插入和删除操作,但访问速度较慢,因为需要遍历链接。 3. **栈**:栈是一种后进先出(LIFO...

    mysql大纲资料.txt

    MySQL是一个广泛使用的开源关系型数据库管理系统(RDBMS),由瑞典MySQL AB公司开发,后来被Sun Microsystems收购,Sun Microsystems后又被甲骨文公司(Oracle)收购。MySQL的名称来自于创始人迈克尔·维德纽斯...

Global site tag (gtag.js) - Google Analytics