如何从Oracle表中批量删除大量数据

黄昏7

我正在使用Oracle 10g,并且要从“人员”表中删除大约500万条记录(总共有1500万条记录),而在“订单”表中没有任何引用(总共500万条记录)

由于一次删除500万条记录会导致撤消日志问题,因此我决定批量删除10万条记录。我正在使用以下查询:

DELETE FROM Persons p
      WHERE     City = 'ABC'
            AND NOT EXISTS
                   (SELECT O_Id
                      FROM Orders o
                     WHERE p.P_Id = o.P_Id)
            AND ROWNUM <= 100000

现在的问题是,执行该查询所需的时间与执行500万条记录所花费的时间一样,要花费500万条记录,这是因为仍将进行全表扫描和两个表的联接。

有没有一种有效的方法来重写此查询以加快执行速度?还是用更好的连接条件替换NOT EXISTS子句?还是使用更好的方法将记录限制为100k?

PS这只是一次操作,因此我不能使用任何DDL操作,但是pl / sql很好

戈登·利诺夫

如果希望此查询运行更快,请添加以下两个索引:

 create index idx_persons_city_pid on persons(city, p_id);
 create index idx_orders_pid on orders(p_id);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从Oracle表中批量删除大量数据

来自分类Dev

从巨大的表中删除大量数据

来自分类Dev

Mysql表中批量数据导入不删除索引

来自分类Dev

使用批量插入在oracle中的表之间移动大数据

来自分类Dev

在 tensorflow 中批量处理大量数据

来自分类Dev

如何从Foxpro删除大量数据

来自分类Dev

如何从Oracle中的表中删除记录?

来自分类Dev

从MongoDB中删除大量数据

来自分类Dev

Oracle如何从表中删除除少数分区数据外的数据

来自分类Dev

如何在Oracle数据库中同时从2个表中删除?

来自分类Dev

如何在Oracle SQL中立即从指定的表中删除数据

来自分类Dev

Windows Azure表存储中的批量删除

来自分类Dev

如何从PostGIS表中删除几何数据

来自分类Dev

如何从数据表中删除元素

来自分类Dev

如何从数据表中删除行

来自分类Dev

如何更新和删除表中的数据?

来自分类Dev

如何从数据表中删除元素

来自分类Dev

如何从PostGIS表中删除几何数据

来自分类Dev

如何从数据表中删除列

来自分类Dev

从数据库中删除批量表

来自分类Dev

如果Oracle中存在表,如何删除表?

来自分类Dev

批量更新表中的数据-最佳方法?

来自分类Dev

如何根据数据列的数量删除数据框中的大量列?

来自分类Dev

如何从Oracle中的表中删除重复的记录

来自分类Dev

Django在表中存储大量数据

来自分类Dev

如何在Oracle中批量插入

来自分类Dev

如何使用php从具有多个表的mysql数据库中检索大量数据

来自分类Dev

如何删除密码中的大量节点

来自分类Dev

如何从文件中删除大量行