Oracle:为什么不使用并行执行?

Rev*_*ous 2 sql oracle parallel-processing

查看以下查询:如果我对子查询进行注释,则它使用并行执行,否则不会.

查询完成后

SELECT  /*+ parallel(c, 20) */
      1, (SELECT 2 FROM DUAL)
  FROM DUAL c;
Run Code Online (Sandbox Code Playgroud)

APC*_*APC 6

您可以在文档中找到答案:

只有满足以下条件,才能并行化SELECT语句:

  • 该查询包括并行提示规范(PARALLEL或PARALLEL_INDEX),或者查询中引用的模式对象具有与之关联的PARALLEL声明.

  • 查询中指定的至少一个表需要以下之一:

    • 全表扫描

    • 跨越多个分区的索引范围扫描

  • SELECT列表中没有标量子查询.

您的查询处于最后的障碍:它的投影中有一个标量子查询.如果要并行化查询,则需要找到另一种编写查询的方法.