* DOCSUP-2806: Add meta intro. * DOCSUP-2806: Update meta intro. * DOCSUP-2806: Fix meta. * DOCSUP-2806: Add quotes for meta headers. * DOCSUP-2806: Remove quotes from meta headers. * DOCSUP-2806: Add meta headers. * DOCSUP-2806: Fix quotes in meta headers. * DOCSUP-2806: Update meta headers. * DOCSUP-2806: Fix link to nowhere in EN. * DOCSUP-2806: Fix link (settings to tune) * DOCSUP-2806: Fix links. * DOCSUP-2806:Fix links EN * DOCSUP-2806: Fix build errors. * DOCSUP-2806: Fix meta intro. * DOCSUP-2806: Fix toc_priority in examples datasets TOC. * DOCSUP-2806: Fix items order in toc. * DOCSUP-2806: Fix order in toc. * DOCSUP-2806: Fix toc order. * DOCSUP-2806: Fix order in toc. * DOCSUP-2806: Fix toc index in create * DOCSUP-2806: Fix toc order in create. Co-authored-by: romanzhukov <romanzhukov@yandex-team.ru> Co-authored-by: alexey-milovidov <milovidov@yandex-team.ru>
4.3 KiB
toc_title |
---|
FROM |
Секция FROM
В секции FROM
указывается источник, из которого будут читаться данные:
- Таблица
- Подзапрос {## TODO: better link ##}
- Табличная функция
Секция JOIN и ARRAY JOIN могут быть использованы для расширения функциональных возможностей секции FROM
.
Подзапрос — дополнительный SELECT
запрос, который может быть указан в круглых скобках внутри секции FROM
.
Секция FROM
может содержать несколько источников данных, указанных через запятую, что эквивалентно выполнению CROSS JOIN на них.
Модификатор FINAL
Если в запросе используется модификатор FINAL
, то ClickHouse полностью мёржит данные перед выдачей результата, таким образом выполняя все преобразования данных, которые производятся движком таблиц при мёржах.
Он применим при выборе данных из таблиц, использующих MergeTree- семейство движков (кроме GraphiteMergeTree
). Также поддерживается для:
- Replicated варианты исполнения
MergeTree
движков. - View, Buffer, Distributed, и MaterializedView, которые работают поверх других движков, если они созданы для таблиц с движками семейства
MergeTree
.
Недостатки
Запросы, которые используют FINAL
выполняются не так быстро, как аналогичные запросы без него, потому что:
- Запрос выполняется в одном потоке, и данные мёржатся во время выполнения запроса.
- Запросы с модификатором
FINAL
читают столбцы первичного ключа в дополнение к столбцам, используемым в запросе.
В большинстве случаев избегайте использования FINAL
. Общий подход заключается в использовании агрегирующих запросов, которые предполагают, что фоновые процессы движков семейства MergeTree
ещё не случились (например, сами отбрасывают дубликаты). {## TODO: examples ##}
Детали реализации
Если секция FROM
опущена, данные будут считываться из таблицы system.one
.
Таблица system.one
содержит ровно одну строку.
Для выполнения запроса, из соответствующей таблицы, вынимаются все столбцы, перечисленные в запросе. Из подзапросов выкидываются столбцы, не нужные для внешнего запроса.
Если в запросе не перечислено ни одного столбца (например, SELECT count() FROM t)
, то из таблицы всё равно вынимается один какой-нибудь столбец (предпочитается самый маленький), для того, чтобы можно было посчитать количество строк.