可并行执行多条语句。
语法
statement1 PARALLEL WITH statement2 [PARALLEL WITH statement3 ...]并行执行语句 statement1、statement2、statement3 等。这些语句的输出会被丢弃。
在很多情况下,并行执行这些语句可能比按顺序依次执行相同的语句更快。例如,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) 。