Поддержка временных таблиц
ClickHouse поддерживает временные таблицы со следующими характеристиками:
- Временные таблицы исчезают после завершения сеанса, в том числе при потере соединения.
- Если движок не указан, временная таблица использует движок таблицы Memory; также она может использовать любой движок таблицы, кроме Replicated и
KeeperMap. - Для временной таблицы нельзя указать DB. Она создаётся вне баз данных.
- Невозможно создать временную таблицу с помощью распределённого DDL-запроса на всех серверах кластера (с использованием
ON CLUSTER): такая таблица существует только в текущем сеансе. - Если временная таблица имеет то же имя, что и другая таблица, а в запросе имя таблицы указано без DB, используется временная таблица.
- При распределённой обработке запросов временные таблицы с движком Memory, используемые в запросе, передаются на удалённые серверы.
Синтаксис
Чтобы создать временную таблицу, используйте следующий синтаксис:
CREATE [OR REPLACE] TEMPORARY TABLE [IF NOT EXISTS] table_name
(
name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1],
name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],
...
) [ENGINE = engine]В большинстве случаев временные таблицы создаются не вручную, а при использовании внешних данных в запросе или распределённого (GLOBAL) IN. Дополнительную информацию см. в соответствующих разделах
Вместо временных таблиц можно использовать таблицы с ENGINE = Memory.