Skip to main content
Эти настройки доступны в system.settings и автоматически формируются на основе исходного кода.

optimize_aggregators_of_group_by_keys

Исключает агрегаторы min/max/any/anyLast для ключей GROUP BY в разделе SELECT

optimize_append_index

Используйте ограничения для добавления условия индекса. Значение по умолчанию — false. Возможные значения:
  • true, false

optimize_arithmetic_operations_in_aggregate_functions

Вынести арифметические операции из агрегатных функций

optimize_const_name_size

Заменять большие константы на скалярные значения и использовать хеш в качестве имени (размер оценивается по длине имени). Возможные значения:
  • положительное целое число — максимальная длина имени,
  • 0 — всегда,
  • отрицательное целое число — никогда.

optimize_count_from_files

Включает или отключает оптимизацию подсчета числа строк в файлах различных входных форматов. Применяется к табличным функциям/движкам file/s3/url/hdfs/azureBlobStorage. Возможные значения:
  • 0 — Оптимизация отключена.
  • 1 — Оптимизация включена.

optimize_dictget_tuple_element

Заменяет tupleElement(dictGet('dict', ('a', 'b', 'c'), key), 2) на dictGet('dict', 'b', key), чтобы не извлекать лишние атрибуты словаря. Поддерживает позиционный (.1, .2, …) и именованный (.b) доступ, а также применяется к dictGetOrDefault, если аргумент значения по умолчанию — константный кортеж или tuple(...) из констант.

optimize_distinct_in_order

Включает оптимизацию DISTINCT, если некоторые столбцы в DISTINCT являются префиксом сортировки. Например, префиксом ключа сортировки в MergeTree или оператора ORDER BY.

optimize_distributed_group_by_sharding_key

Оптимизирует запросы GROUP BY sharding_key, позволяя избежать затратной агрегации на инициирующем сервере (что уменьшает использование памяти для запроса на инициирующем сервере). Поддерживаются следующие типы запросов (и любые их комбинации):
  • SELECT DISTINCT [..., ]sharding_key[, ...] FROM dist
  • SELECT ... FROM dist GROUP BY sharding_key[, ...]
  • SELECT ... FROM dist GROUP BY sharding_key[, ...] ORDER BY x
  • SELECT ... FROM dist GROUP BY sharding_key[, ...] LIMIT 1
  • SELECT ... FROM dist GROUP BY sharding_key[, ...] LIMIT 1 BY x
Следующие типы запросов не поддерживаются (поддержка некоторых из них может быть добавлена позже):
  • SELECT ... GROUP BY sharding_key[, ...] WITH TOTALS
  • SELECT ... GROUP BY sharding_key[, ...] WITH ROLLUP
  • SELECT ... GROUP BY sharding_key[, ...] WITH CUBE
  • SELECT ... GROUP BY sharding_key[, ...] SETTINGS extremes=1
Возможные значения:
  • 0 — Отключено.
  • 1 — Включено.
См. также:
Сейчас требуется optimize_skip_unused_shards (это связано с тем, что в будущем данный параметр может быть включен по умолчанию, и корректно он будет работать только в том случае, если данные были вставлены через distributed таблицу, то есть распределены в соответствии с sharding_key).

optimize_dry_run_check_part

При включении OPTIMIZE ... DRY RUN проверяет получившуюся слитую часть с помощью checkDataPart. Если проверка не проходит, генерируется исключение.

optimize_empty_string_comparisons

Преобразует выражения вида col = ” или ” = col в empty(col), а col != ” или ” != col — в notEmpty(col) только в случаях, когда col имеет тип String или FixedString.

optimize_extract_common_expressions

Разрешает выносить общие выражения из дизъюнкций в выражениях WHERE, PREWHERE, ON, HAVING и QUALIFY. Логическое выражение вида (A AND B) OR (A AND C) можно переписать как A AND (B OR C), что может помочь использовать:
  • индексы в простых выражениях фильтрации
  • оптимизацию преобразования CROSS JOIN в INNER JOIN

optimize_functions_to_subcolumns

Включает или отключает оптимизацию, при которой некоторые функции преобразуются в чтение подстолбцов. Это уменьшает объем считываемых данных. Можно преобразовать следующие функции: Возможные значения:
  • 0 — Оптимизация отключена.
  • 1 — Оптимизация включена.

optimize_inverse_dictionary_lookup

Позволяет избежать повторных обратных обращений к словарю за счёт более быстрого поиска в предварительно вычисленном наборе возможных значений ключей.

optimize_multiif_to_if

Заменяет ‘multiIf’ с одним условием на ‘if’.

optimize_normalize_count_variants

Переписывает агрегатные функции, семантически эквивалентные count(), в count().

optimize_on_insert

Включает или отключает преобразование данных перед вставкой, как если бы для этого блока уже было выполнено слияние (в соответствии с движком таблицы). Возможные значения:
  • 0 — Отключено.
  • 1 — Включено.
Пример Разница между включенным и отключенным режимами: Запрос:
Результат:
Обратите внимание, что эта настройка влияет на поведение Materialized view.

optimize_prewhere_after_pushdown

Выполняет второй проход вынесения в PREWHERE после того, как более поздние оптимизации плана запроса могли добавить дополнительные фильтры выше шага чтения MergeTree (например, pushdown предикатов через JOIN, переписывание projection). Если PREWHERE уже есть, новый фильтр объединяется с ним через AND, а не остаётся отдельным шагом фильтрации.

optimize_qbit_distance_function_reads

Заменяет функции расстояния для типа данных QBit на эквивалентные, которые считывают из хранилища только столбцы, необходимые для вычисления.

optimize_read_in_order

Включает оптимизацию ORDER BY в запросах SELECT при чтении данных из таблиц MergeTree. Возможные значения:
  • 0 — оптимизация ORDER BY отключена.
  • 1 — оптимизация ORDER BY включена.
См. также

optimize_respect_aliases

Если задано значение true, будут учитываться псевдонимы в WHERE/GROUP BY/ORDER BY, что поможет при отсечении партиций/использовании вторичных индексов/optimize_aggregation_in_order/optimize_read_in_order/optimize_trivial_count

optimize_sorting_by_input_stream_properties

Оптимизирует сортировку с учетом свойств сортировки входного потока

optimize_substitute_columns

Используйте ограничения для подстановки столбцов. Значение по умолчанию — false. Возможные значения:
  • true, false

optimize_syntax_fuse_functions

Включает объединение агрегатных функций с одинаковым аргументом. Переписывает запрос, содержащий как минимум две агрегатные функции sum, count или avg с одинаковым аргументом, заменяя их на sumCount. Возможные значения:
  • 0 — Функции с одинаковым аргументом не объединяются.
  • 1 — Функции с одинаковым аргументом объединяются.
Пример Запрос:
Результат:

optimize_throw_if_noop

Включает или отключает генерацию исключения, если запрос OPTIMIZE не выполнил слияние. По умолчанию OPTIMIZE завершается успешно, даже если фактически ничего не делает. Этот параметр позволяет различать такие ситуации и получать причину в сообщении об исключении. Возможные значения:
  • 1 — Генерация исключения включена.
  • 0 — Генерация исключения отключена.

optimize_time_filter_with_preimage

Оптимизирует предикаты Date и DateTime, преобразуя функции в эквивалентные сравнения без преобразований (например, toYear(col) = 2023 -> col >= '2023-01-01' AND col <= '2023-12-31')

optimize_truncate_order_by_after_group_by_keys

Удалять элементы в конце ORDER BY, когда все ключи GROUP BY уже входят в префикс ORDER BY.

optimize_uniq_to_count

Преобразует uniq и его варианты (кроме uniqUpTo) в count, если подзапрос содержит DISTINCT или предложение GROUP BY.

optimize_using_constraints

Используйте ограничения для оптимизации запроса. Значение по умолчанию — false. Возможные значения:
  • true, false
Последнее изменение 23 июля 2026 г.