optimize_aggregators_of_group_by_keys
Исключает агрегаторы min/max/any/anyLast для ключей GROUP BY в разделе SELECToptimize_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 distSELECT ... FROM dist GROUP BY sharding_key[, ...]SELECT ... FROM dist GROUP BY sharding_key[, ...] ORDER BY xSELECT ... FROM dist GROUP BY sharding_key[, ...] LIMIT 1SELECT ... FROM dist GROUP BY sharding_key[, ...] LIMIT 1 BY x
SELECT ... GROUP BY sharding_key[, ...] WITH TOTALSSELECT ... GROUP BY sharding_key[, ...] WITH ROLLUPSELECT ... GROUP BY sharding_key[, ...] WITH CUBESELECT ... 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
Включает или отключает оптимизацию, при которой некоторые функции преобразуются в чтение подстолбцов. Это уменьшает объем считываемых данных. Можно преобразовать следующие функции:- length для чтения подстолбца size0.
- empty для чтения подстолбца size0.
- notEmpty для чтения подстолбца size0.
- isNull для чтения подстолбца null.
- isNotNull для чтения подстолбца null.
- count для чтения подстолбца null.
- mapKeys для чтения подстолбца keys.
- mapValues для чтения подстолбца values.
- has и notHas для
Mapдля чтения подстолбца keys. - mapContainsKeyLike для чтения подстолбца keys.
- mapContainsValueLike для чтения подстолбца values.
- 0 — Оптимизация отключена.
- 1 — Оптимизация включена.
optimize_inverse_dictionary_lookup
Позволяет избежать повторных обратных обращений к словарю за счёт более быстрого поиска в предварительно вычисленном наборе возможных значений ключей.optimize_multiif_to_if
Заменяет ‘multiIf’ с одним условием на ‘if’.optimize_mutations_with_partition_pruning
Если включено, ClickHouse автоматически определяет условия по ключу партиционирования в предложении WHERE мутацийALTER TABLE UPDATE/DELETE и операторов легковесного UPDATE/DELETE для таблиц семейства ReplicatedMergeTree и обрабатывает только затронутые партиции, а не все партиции.
В настоящее время автоматическое отсечение применяется только к реплицируемым таблицам. Для нереплицируемых таблиц MergeTree используйте явное предложение IN PARTITION, чтобы ограничить мутацию конкретными партициями.
Возможные значения:
- 0 — Отключено. Мутации и легковесные обновления обрабатывают все партиции.
- 1 — Включено. Мутации и легковесные обновления обрабатывают только партиции, соответствующие условию WHERE.
optimize_normalize_count_variants
Переписывает агрегатные функции, семантически эквивалентные count(), в count().optimize_on_insert
Включает или отключает преобразование данных перед вставкой, как если бы для этого блока уже было выполнено слияние (в соответствии с движком таблицы). Возможные значения:- 0 — Отключено.
- 1 — Включено.
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_read_in_reverse_order_final
Включает чтение данных в обратном порядке ключа сортировки в запросахSELECT с модификатором FINAL из таблиц ReplacingMergeTree. Работает, только если также включена настройка optimize_read_in_order.
Возможные значения:
- 0 — Чтение в обратном порядке с
FINALотключено. - 1 — Чтение в обратном порядке с
FINALвключено.
optimize_respect_aliases
Если задано значение true, будут учитываться псевдонимы в WHERE/GROUP BY/ORDER BY, что поможет при отсечении партиций/использовании вторичных индексов/optimize_aggregation_in_order/optimize_read_in_order/optimize_trivial_countoptimize_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