query_plan_aggregation_bucket_top_k
Включает или отключает оптимизацию на уровне плана запроса: если финальная агрегация передаёт результаты вORDER BY с LIMIT n, а план гарантирует точность выборки в каждом бакете, на этапе финального преобразования агрегации материализуются только n лучших групп из каждого двухуровневого бакета в этом порядке. Результат точен: у группы, не входящей в n лучших групп своего бакета, есть как минимум n групп, опережающих её в глобальном порядке, поэтому она не может войти в глобальный top n.
Действует только при значении 1 настройки query_plan_enable_optimizations.
Возможные значения:
- 0 - Отключить
- 1 - Включить
query_plan_aggregation_in_order
Включает или отключает оптимизацию агрегации в порядке выполнения на уровне плана запроса. Действует только в том случае, если значение настройкиquery_plan_enable_optimizations равно 1.
Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем настройка может измениться обратно несовместимым образом или быть удалена.
- 0 - Отключено
- 1 - Включено
query_plan_convert_any_join_to_semi_or_anti_join
Разрешает преобразовывать ANY JOIN в SEMI или ANTI JOIN, если фильтр после JOIN для совпавших или несовпавших строк всегда принимает значение falsequery_plan_convert_join_to_in
Разрешает преобразовыватьJOIN в подзапрос с IN, если выходные столбцы относятся только к левой таблице. Может приводить к неверным результатам с JOIN, отличными от ANY JOIN (например, с ALL JOIN, который используется по умолчанию).
query_plan_convert_outer_join_to_inner_join
Разрешает преобразовыватьOUTER JOIN в INNER JOIN, если фильтр после JOIN всегда исключает значения по умолчанию
query_plan_direct_read_from_text_index
Позволяет выполнять фильтрацию при полнотекстовом поиске, используя в плане запроса только инвертированный текстовый индекс.query_plan_display_internal_aliases
Показывать в EXPLAIN PLAN внутренние псевдонимы (например, __table1) вместо псевдонимов, указанных в исходном запросе.query_plan_enable_multithreading_after_window_functions
Включает многопоточность после вычисления оконных функций, что позволяет выполнять потоковую обработку параллельноquery_plan_enable_optimizations
Включает или отключает оптимизацию запросов на уровне плана запроса.Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем эта настройка может измениться обратно несовместимым образом или быть удалена.
- 0 — отключить все оптимизации на уровне плана запроса
- 1 — включить оптимизации на уровне плана запроса (при этом отдельные оптимизации по-прежнему можно отключить их собственными настройками)
query_plan_execute_functions_after_sorting
Включает или отключает оптимизацию на уровне плана запроса, которая перемещает выражения после этапов сортировки. Действует только если значение настройкиquery_plan_enable_optimizations равно 1.
Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем настройка может измениться обратно несовместимым образом или быть удалена.
- 0 - Отключить
- 1 - Включить
query_plan_filter_push_down
Включает или отключает оптимизацию на уровне плана запроса, которая опускает фильтры ниже в плане выполнения. Применяется только в том случае, если значение настройки query_plan_enable_optimizations равно 1.Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем эта настройка может измениться обратно несовместимым образом или быть удалена.
- 0 - Отключить
- 1 - Включить
query_plan_fuse_filter_into_array_join
Включает или отключает оптимизацию на уровне плана запроса, объединяющую фильтр по столбцам элементовARRAY JOIN с шагом ARRAY JOIN. Массивы фильтруются в пространстве элементов до развёртывания, поэтому отфильтрованные элементы никогда не развёртываются и не реплицируются.
Действует только при значении 1 настройки query_plan_enable_optimizations.
Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем настройка может быть изменена обратно несовместимым образом или удалена.
query_plan_join_shard_by_pk_ranges
Применять сегментирование для JOIN, если ключи JOIN в обеих таблицах содержат префикс PRIMARY KEY. Поддерживается для алгоритмов hash, parallel_hash, full_sorting_merge и parallel_full_sorting_merge. Обычно не ускоряет запросы, но может снизить потребление памяти.query_plan_join_swap_table
Определяет, какая сторона JOIN должна использоваться как build-таблица (также называемая inner — она помещается в hash-таблицу при hash JOIN) в плане запроса. Эта настройка поддерживается только для strictnessALL с условием JOIN ON. Возможные значения:
- ‘auto’: позволить planner’у определить, какую таблицу использовать как build-таблицу.
- ‘false’: никогда не менять таблицы местами (build-таблицей является правая таблица).
- ‘true’: всегда менять таблицы местами (build-таблицей является левая таблица).
query_plan_lift_up_array_join
Включает или отключает оптимизацию на уровне плана запроса, которая перемещает ARRAY JOIN выше в плане выполнения. Работает только в том случае, если для настройки query_plan_enable_optimizations установлено значение 1.Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем эта настройка может измениться обратно несовместимым образом или быть удалена.
- 0 - Отключить
- 1 - Включить
query_plan_lift_up_union
Включает или отключает оптимизацию на уровне плана запроса, которая переносит более крупные поддеревья плана запроса в union, чтобы открыть возможности для дальнейших оптимизаций. Действует только если значение настройкиquery_plan_enable_optimizations равно 1.
Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем эта настройка может измениться обратно несовместимым образом или быть удалена.
- 0 - Отключить
- 1 - Включить
query_plan_lower_array_join_function
Включает или отключает оптимизацию на уровне плана запроса, которая преобразует функциюarrayJoin внутри выражения в полноценный шаг ARRAY JOIN, благодаря чему она обрабатывается тем же механизмом выполнения, что и предложение ARRAY JOIN (отложенная репликация и слияние фильтров).
Действует только в том случае, если настройка query_plan_enable_optimizations равна 1.
Это настройка экспертного уровня, предназначенная только для отладки разработчиками. В будущем настройка может измениться обратно несовместимым образом или быть удалена.
query_plan_max_limit_for_join_lazy_indexing
Управляет максимальным значением, при котором можно использовать план запроса для отложенной оптимизации индексирования в JOIN. Если значение равно нулю, ограничение отсутствует.query_plan_max_limit_for_lazy_materialization
Управляет максимальным значением LIMIT, при котором можно использовать план запроса для оптимизации отложенной материализации. Если равно нулю, ограничение отсутствует.query_plan_max_limit_for_top_k_optimization
Определяет максимальное значение LIMIT, при котором выполняется оценка плана запроса для оптимизации TopK с использованием индекса пропуска данных minmax и динамической фильтрации по порогу. Если значение равно 0, ограничение отсутствует. Эта настройка также управляет поведением enable_group_by_top_k_optimization.query_plan_max_optimizations_to_apply
Ограничивает общее число оптимизаций, применяемых к плану запроса; см. настройку query_plan_enable_optimizations. Полезно, чтобы избежать длительной оптимизации сложных запросов. В запросе EXPLAIN PLAN после достижения этого предела применение оптимизаций прекращается, и план возвращается как есть. При обычном выполнении запроса, если фактическое число оптимизаций превышает значение этой настройки, генерируется исключение.Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем она может измениться обратно несовместимым образом или быть удалена.
query_plan_max_set_size_for_projection_match
Максимальное количество строк во множестве условияIN, для которого механизм сопоставления проекций вычисляет и сравнивает хеши содержимого при определении равенства двух множеств. Множества, размер которых превышает это значение, считаются несовпадающими, и проекция пропускается. Ноль полностью отключает сравнение хешей содержимого: сопоставление проекций никогда не бывает успешным для узлов, содержащих множества условия IN.
Используется механизмом сопоставления aggregate projection (и любым будущим механизмом сопоставления проекций, которому потребуется сравнивать множества условия IN). Вычисление хеша содержимого имеет сложность O(N log N) по числу элементов множества; эта настройка ограничивает затраты на этапе планирования, когда в запросе или проекции присутствует много условий IN.
query_plan_max_step_description_length
Максимальная длина описания шага в EXPLAIN PLAN.query_plan_merge_expression_into_join
Разрешает объединять выражения в шаг JOIN при оптимизации порядка JOIN.query_plan_merge_expressions
Включает или отключает оптимизацию на уровне плана запроса, которая объединяет последовательные фильтры. Действует только если значение настройки query_plan_enable_optimizations равно 1.Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем эта настройка может измениться обратно несовместимым образом или быть удалена.
- 0 - Отключено
- 1 - Включено
query_plan_merge_filter_into_join_condition
Позволяет объединять фильтр с условиемJOIN и преобразовывать CROSS JOIN в INNER.
query_plan_merge_filters
Позволяет объединять фильтры в плане запроса.query_plan_min_columns_for_join_lazy_indexing
Управляет минимальным количеством столбцов полезной нагрузки из левой части, необходимым для включения оптимизации отложенной индексации в JOIN. 0 означает, что оптимизация отключена.query_plan_optimize_count_from_text_index
Позволяет выполнятьSELECT count() ... WHERE <text search predicate> непосредственно по числу элементов в списках проводок текстового индекса, без материализации подходящих строк.
Работает только при включённой настройке query_plan_direct_read_from_text_index.
query_plan_optimize_join_order_algorithm
Определяет, какие алгоритмы порядка JOIN следует применять при оптимизации плана запроса. Доступны следующие алгоритмы:- ‘greedy’ - базовый жадный алгоритм — работает быстро, но не всегда даёт наилучший порядок JOIN
- ‘dpsize’ - реализует алгоритм DPsize, который в настоящее время поддерживает только INNER JOIN, — перебирает все возможные порядки JOIN и находит оптимальный, но может работать медленно для запросов с большим количеством таблиц и предикатов JOIN.
- ‘dpsub’ - реализует алгоритм DPsub, который поддерживает как INNER JOIN, так и другие типы JOIN, — перебирает все возможные порядки JOIN и находит оптимальный, но может работать медленно для запросов с большим количеством таблиц и предикатов JOIN.
- ‘dphyp’ - реализует алгоритм DPhyp (Dynamic Programming via Hypergraph Partitioning), который в настоящее время поддерживает только INNER JOIN, — исследует то же пространство поиска, что и
dpsize, но перебирает только пары связанных подграфов, создавая меньше промежуточных JOIN в разреженных графах JOIN, ценой отказа от рассмотрения декартовых произведений Можно указать несколько алгоритмов в виде списка, разделённого запятыми, напримерdphyp,greedy. Они применяются по порядку; если алгоритм не может обработать запрос (например, из-за OUTER JOIN или несвязанных компонентов), в качестве резервного варианта используется следующий.
query_plan_optimize_join_order_conflict_detector
Влияет только на алгоритм порядка JOINdpsub. Выбирает детектор конфликтов, с помощью которого DPsub определяет, какие переупорядочивания JOIN допустимы. Доступны следующие значения:
''(по умолчанию) — детектор конфликтов не используется, DPsub применяет ограничениеONclause для каждого отношения'a'— детектор конфликтов CD-A, корректный, но неполный'c'— детектор конфликтов CD-C, корректный и полный
query_plan_optimize_join_order_limit
Оптимизирует порядок JOIN в рамках одного подзапроса. Пока поддерживается только в очень ограниченном числе случаев. Значение задаёт максимальное количество таблиц, для которых выполняется оптимизация.query_plan_optimize_join_order_max_searched_plans
Максимальное число частичных планов, которые оптимизатор порядка JOIN может перебрать, прежде чем прекратить поиск и перейти к следующему алгоритму вquery_plan_optimize_join_order_algorithm.
Это детерминированно ограничивает время оптимизации (независимо от реального времени) на плотных графах JOIN, таких как клики или звёзды, где пространство поиска растёт экспоненциально.
Установите 0, чтобы отключить ограничение. Не влияет на значение по умолчанию query_plan_optimize_join_order_limit, при котором поиск всегда остаётся значительно ниже этого предела.
query_plan_optimize_join_order_randomize
Если значение не равно нулю, оптимизатор порядка JOIN использует случайно сгенерированные кардинальности и NDV вместо реальной статистики. Если задано значение 1, генерируется начальное значение генератора случайных чисел; если задано значение > 1, это значение используется напрямую как начальное значение генератора случайных чисел. Это предназначено для тестирования и помогает выявлять ошибки, вызванные различным порядком JOIN.query_plan_optimize_lazy_final
Оптимизирует чтение с FINAL в ReplacingMergeTree путем построения множества первичных ключей и его использования при анализе индекса.query_plan_optimize_lazy_materialization
Использовать план запроса для оптимизации отложенной материализации.query_plan_optimize_lazy_materialization_for_file
Использовать оптимизацию отложенной материализации при чтении локальных файлов Parquet с помощью табличной функцииfile и движка таблицы File: в запросах ORDER BY ... LIMIT n столбцы, не требующиеся для сортировки и фильтрации, считываются только для n строк, оставшихся после применения LIMIT. Действует только при включенной настройке query_plan_optimize_lazy_materialization.
query_plan_optimize_lazy_materialization_for_object_storage
Использовать оптимизацию отложенной материализации при чтении файлов Parquet из объектного хранилища (включая таблицы Iceberg): в запросахORDER BY ... LIMIT n столбцы, не необходимые для сортировки и фильтрации, считываются только для n строк, оставшихся после применения LIMIT. Действует только при включенной настройке query_plan_optimize_lazy_materialization.
query_plan_optimize_prewhere
Разрешает проталкивать фильтр в выражение PREWHERE для поддерживаемых хранилищquery_plan_propagate_predicate_across_join
Включает оптимизацию на уровне плана запроса, которая копирует конъюнкты фильтра с одной стороны эквисоединения на другую посредством подстановки эквивалентных ключей, чтобы отсечение по первичному ключу/индексу на другой стороне могло их использовать. Применяется, когда фильтр и чтение изMergeTree отделены от JOIN только шагами выражений
и фильтрации, а скопированный конъюнкт сравнивает столбец первичного ключа с константой
(в том числе IN с константным множеством). Предикат под вложенным JOIN или под DISTINCT, а также
сравнение двух столбцов ключа остаются без изменений: они всё равно не позволили бы выполнить отсечение по
первичному ключу на другой стороне, так что их копирование лишь добавило бы работы.
Действует только при query_plan_enable_optimizations, равном 1.
query_plan_push_down_limit
Включает или отключает оптимизацию на уровне плана запроса, которая перемещает LIMIT ниже в плане выполнения. Настройка действует только в том случае, если значение query_plan_enable_optimizations равно 1.Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем она может измениться обратно несовместимым образом или быть удалена.
- 0 - Отключить
- 1 - Включить
query_plan_push_down_volume_reducing_functions
Включает или отключает оптимизацию на уровне плана запроса, которая перемещает функции, уменьшающие объём (length, lengthUTF8, empty, notEmpty), ниже этапов Sorting и Filter в плане выполнения. Результат фиксированного размера заменяет широкий аргумент типа String / FixedString, поэтому его больше не нужно передавать через эти этапы.
Преобразование применяется только в том случае, если столбец-аргумент не требуется выше этапа, ниже которого он проталкивается.
Действует только при значении 1 настройки query_plan_enable_optimizations.
Возможные значения:
- 0 — Отключить
- 1 — Включить
query_plan_push_limit_by_into_sort
Включает или отключает оптимизацию на уровне плана запроса для запросовORDER BY ... LIMIT BY. Когда столбцы LIMIT BY являются префиксом предложения ORDER BY, LIMIT BY применяется в каждом параллельном отсортированном потоке до слияния потоков в один, что уменьшает количество строк, обрабатываемых на этапе финального слияния и на последующих стадиях конвейера. Ускоряет запросы, в которых LIMIT BY отбрасывает значительную часть строк.
Действует только если значение настройки query_plan_enable_optimizations равно 1.
Возможные значения:
- 0 - Отключить
- 1 - Включить
query_plan_read_in_order
Включает или отключает оптимизацию чтения in-order на уровне плана запроса. Действует, только если значение настройкиquery_plan_enable_optimizations равно 1.
Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем эта настройка может измениться обратно несовместимым образом или быть удалена.
- 0 - Отключено
- 1 - Включено
query_plan_read_in_order_through_join
Сохранять упорядоченное чтение из левой таблицы при выполнении операций JOIN, чтобы его можно было использовать на последующих этапах.query_plan_remove_redundant_distinct
Включает или отключает оптимизацию на уровне плана запроса, которая удаляет избыточные шаги DISTINCT. Действует только если значение настройкиquery_plan_enable_optimizations равно 1.
Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем эта настройка может измениться обратно несовместимым образом или быть удалена.
- 0 - Отключить
- 1 - Включить
query_plan_remove_redundant_sorting
Включает или отключает оптимизацию на уровне плана запроса, удаляющую избыточные шаги сортировки, например во вложенных запросах. Действует только в том случае, если для настройкиquery_plan_enable_optimizations установлено значение 1.
Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем эта настройка может измениться обратно несовместимым образом или быть удалена.
- 0 - Отключено
- 1 - Включено
query_plan_remove_unused_columns
Включает или отключает оптимизацию на уровне плана запроса, которая пытается удалять неиспользуемые столбцы (как входные, так и выходные) из шагов плана запроса. Действует только если значение настройки query_plan_enable_optimizations равно 1.Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем настройка может измениться обратно несовместимым образом или быть удалена.
- 0 - Отключено
- 1 - Включено
query_plan_reuse_storage_ordering_for_window_functions
Псевдонимы:optimize_read_in_window_order
Включает или отключает оптимизацию на уровне плана запроса, которая использует порядок сортировки в хранилище при сортировке для оконных функций.
Действует только если значение параметра query_plan_enable_optimizations равно 1.
Это параметр экспертного уровня, который разработчикам следует использовать только для отладки. В будущем параметр может измениться обратно несовместимым образом или быть удалён.
- 0 - Отключено
- 1 - Включено
query_plan_short_circuit_constant_false_join
Сокращает обработкуJOIN, условие ON которого сворачивается в константу false, заменяя пустым источником каждую входную сторону, которая не может дать ни одной строки результата (обе стороны для INNER/CROSS/SEMI, непредохраняемую сторону для LEFT/RIGHT), чтобы не читать сторону, не участвующую в результате. Применяется к нераспределённым планам.
query_plan_split_filter
Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем эта настройка может измениться обратно несовместимым образом или быть удалена.
- 0 - Отключить
- 1 - Включить
query_plan_text_index_add_hint
Разрешает добавлять подсказку (дополнительный предикат) для фильтрации, построенной на основе инвертированного текстового индекса, в плане запроса.query_plan_top_k_through_join
Включает или отключает оптимизацию на уровне плана запроса, которая продвигаетORDER BY ... LIMIT n через JOIN, если ключ сортировки ссылается только на столбцы сохраняемой стороны JOIN (LEFT/RIGHT). Ограничивает, сколько строк должен вернуть вход сохраняемой стороны до выполнения JOIN.
Действует только если для настройки query_plan_enable_optimizations установлено значение 1.
Возможные значения:
- 0 - Отключено
- 1 - Включено
query_plan_try_use_vector_search
Включает или отключает оптимизацию на уровне плана запроса, которая пытается использовать индекс векторного сходства. Действует только в том случае, если значение настройкиquery_plan_enable_optimizations равно 1.
Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем настройка может измениться обратно несовместимым образом или быть удалена.
- 0 - Отключено
- 1 - Включено