跳到主要内容
跳到主要内容

PARALLEL WITH 子句

允许并行执行多个语句。

语法

statement1 PARALLEL WITH statement2 [PARALLEL WITH statement3 ...]

并行执行语句 statement1statement2statement3,...。这些语句的输出将被丢弃。

在许多情况下,并行执行语句可能比按顺序执行相同语句更快。例如,statement1 PARALLEL WITH statement2 PARALLEL WITH statement3 可能比 statement1; statement2; statement3 更快。

示例

并行创建两个表

CREATE TABLE table1(x Int32) ENGINE = MergeTree ORDER BY tuple()
PARALLEL WITH
CREATE TABLE table2(y String) ENGINE = MergeTree ORDER BY tuple();

并行删除两个表

DROP TABLE table1
PARALLEL WITH
DROP TABLE table2;

设置

设置 max_threads 控制生成多少线程。

与 UNION 的比较

PARALLEL WITH 子句有点类似于 UNION,后者也并行执行其操作数。但是,两者之间存在一些差异

  • PARALLEL WITH 不会返回执行其操作数的任何结果,如果存在异常,它只会重新抛出它们;
  • PARALLEL WITH 不要求其操作数具有相同的结果列集;
  • PARALLEL WITH 可以执行任何语句(不仅仅是 SELECT)。