Skip to main content
Edit this page

PARALLEL WITH Clause

Allows to execute multiple statements in parallel.

Syntax

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

Executes statements statement1, statement2, statement3, ... in parallel with each other. The output of those statements is discarded.

Executing statements in parallel may be faster than just a sequence of the same statements in many cases. For example, statement1 PARALLEL WITH statement2 PARALLEL WITH statement3 is likely to be faster than statement1; statement2; statement3.

Examples

Creates two tables in parallel:

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

Drops two tables in parallel:

DROP TABLE table1
PARALLEL WITH
DROP TABLE table2;

Settings

Setting max_threads controls how many threads are spawned.

Comparison with UNION

The PARALLEL WITH clause is a bit similar to UNION, which also executes its operands in parallel. However there are some differences:

  • PARALLEL WITH doesn't return any results from executing its operands, it can only rethrow an exception from them if any;
  • PARALLEL WITH doesn't require its operands to have the same set of result columns;
  • PARALLEL WITH can execute any statements (not just SELECT).