Перейти к основному содержимому
Перейти к основному содержимому

Оператор PARALLEL WITH

Позволяет выполнять несколько операторов параллельно.

Синтаксис

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).