Sql 甲骨文:为什么并行删除不能并行?

Sql 甲骨文:为什么并行删除不能并行?,sql,oracle,parallel-processing,dml,Sql,Oracle,Parallel Processing,Dml,我试过下面的说法。但这并不是平行进行的。为什么? 我怎样才能加快操作速度 ALTER SESSION ENABLE PARALLEL DML; DELETE /*+ parallel(20) */ FROM table WHERE flag != 'N'; 试一试 您还可以尝试使用CTA和asktom中的引用来删除数据 创建表格新表格不可恢复,如从旧表格中选择*,其中 放下旧桌子 将新_表重命名为旧_表 在旧_表C1、c2不可恢复并行5上创建索引旧_表_idx1 1

我试过下面的说法。但这并不是平行进行的。为什么? 我怎样才能加快操作速度

ALTER SESSION ENABLE PARALLEL DML;

DELETE /*+ parallel(20) */
      FROM  table
      WHERE flag != 'N';
试一试

您还可以尝试使用CTA和asktom中的引用来删除数据

创建表格新表格不可恢复,如从旧表格中选择*,其中

放下旧桌子

将新_表重命名为旧_表

在旧_表C1、c2不可恢复并行5上创建索引旧_表_idx1


1不起作用。我放了一张图片。块更改仅由一个线程执行,操作速度比select慢上千倍。2I无法删除原始表..您的表是否使用位图索引?或者您可以尝试使用不同的键值范围或rowid范围手动并行。不,不要使用位图索引。我担心问题是桌子没有分区。所以它创建了对我来说无用的重做段,它更新了索引,ecc。。。所有无用的。。。我可以禁用吗?1我发现了这篇文章2我可以禁用回滚吗?关于在,但是这也帮不了我。只有当表被分区并且操作涉及多个分区时,DELETE parallel才会起作用,即DELETE必须从多个分区中删除,而不是仅从一个分区中删除。对于非分区表,必须使用ALTER table将表设置为PARALLEL,然后在DELETE中使用ALTER SESSION FORCE PARALLEL DML with PARALLEL hint with PARALLEL hint。PARALLEL hint不起作用的另一个原因是表中存在触发器。如果表中存在已启用的触发器,则并行提示几乎肯定不起作用,因此禁用触发器是必要的。但是如果禁用触发器会破坏功能,那么我想这是一个没有实际意义的问题。@Annjawn分区限制不再适用,至少从11g开始。
ALTER SESSION ENABLE PARALLEL DML;
DELETE /*+ parallel(table, 20) */
  FROM  table
  WHERE flag!= 'N';