> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# настройки сеанса query_plan_*

> Настройки сеанса ClickHouse из автоматически сгенерированной группы query_plan_*.

export const SettingsInfoBlock = ({type, default_value, changeable_without_restart}) => {
  return <div className="not-prose" style={{
    display: "flex",
    flexWrap: "wrap",
    alignItems: "baseline",
    columnGap: "0.5rem",
    rowGap: "0.125rem",
    margin: "0.375rem 0",
    fontSize: "0.8125rem",
    lineHeight: "1.125rem"
  }}>
      <div style={{
    fontWeight: 600,
    opacity: 0.72
  }}>Тип</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{type}</div>
      <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>По умолчанию</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{default_value}</div>
      {changeable_without_restart && <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>
          Изменяется без перезапуска
        </div>}
      {changeable_without_restart && <div style={{
    overflowWrap: "anywhere"
  }}>
          {changeable_without_restart}
        </div>}
    </div>;
};

export const ExperimentalBadge = () => {
  return <div className="experimentalBadge">
            <div className="experimentalIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.25" d="M5.5 2H10.5" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M9.50015 2V6.19625L13.4283 12.7425C13.4738 12.8183 13.4985 12.9049 13.4996 12.9934C13.5008 13.0818 13.4785 13.169 13.435 13.246C13.3914 13.323 13.3283 13.3871 13.2519 13.4317C13.1755 13.4764 13.0886 13.4999 13.0002 13.5H3.00015C2.91164 13.5 2.8247 13.4766 2.74822 13.432C2.67174 13.3874 2.60847 13.3233 2.56487 13.2463C2.52126 13.1693 2.49889 13.082 2.50004 12.9935C2.50119 12.905 2.52582 12.8184 2.5714 12.7425L6.50015 6.19625V2" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M4.47656 9.56754C5.30344 9.41254 6.47656 9.47942 7.99969 10.25C10.0153 11.2707 11.4216 11.0569 12.2184 10.7282" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>
        </div>
            Экспериментальная возможность. <u><a href="/docs/docs/beta-and-experimental-features#experimental-features">Подробнее.</a></u>
        </div>;
};

Эти настройки доступны в [system.settings](/docs/ru/reference/system-tables/settings) и автоматически сгенерированы на основе [исходного кода](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/Settings.cpp).

<div id="query_plan_aggregation_in_order">
  ## query\_plan\_aggregation\_in\_order
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "22.12"},{"label": "1"},{"label": "Выполнен некоторый рефакторинг, связанный с планом запроса"}]}]} />

Включает или отключает оптимизацию агрегации в порядке выполнения на уровне плана запроса.
Действует только в том случае, если значение настройки [`query_plan_enable_optimizations`](/docs/ru/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) равно 1.

<Note>
  Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем настройка может измениться обратно несовместимым образом или быть удалена.
</Note>

Возможные значения:

* 0 - Отключено
* 1 - Включено

<div id="query_plan_convert_any_join_to_semi_or_anti_join">
  ## query\_plan\_convert\_any\_join\_to\_semi\_or\_anti\_join
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "1"},{"label": "Новая настройка."}]}]} />

Разрешает преобразовывать ANY JOIN в SEMI или ANTI JOIN, если фильтр после JOIN для совпавших или несовпавших строк всегда принимает значение false

<div id="query_plan_convert_join_to_in">
  ## query\_plan\_convert\_join\_to\_in
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "0"},{"label": "новая настройка"}]}]} />

Разрешает преобразовывать `JOIN` в подзапрос с `IN`, если выходные столбцы относятся только к левой таблице. Может приводить к неверным результатам с JOIN, отличными от `ANY JOIN` (например, с `ALL JOIN`, который используется по умолчанию).

<div id="query_plan_convert_outer_join_to_inner_join">
  ## query\_plan\_convert\_outer\_join\_to\_inner\_join
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.4"},{"label": "1"},{"label": "Разрешает преобразовывать OUTER JOIN в INNER JOIN, если фильтр после JOIN всегда исключает значения по умолчанию"}]}]} />

Разрешает преобразовывать `OUTER JOIN` в `INNER JOIN`, если фильтр после `JOIN` всегда исключает значения по умолчанию

<div id="query_plan_direct_read_from_text_index">
  ## query\_plan\_direct\_read\_from\_text\_index
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "Текстовый индекс теперь в статусе GA"}]}, {"id": "row-2","items": [{"label": "25.9"},{"label": "1"},{"label": "Новая настройка"}]}]} />

Позволяет выполнять фильтрацию при полнотекстовом поиске, используя в плане запроса только инвертированный текстовый индекс.

<div id="query_plan_display_internal_aliases">
  ## query\_plan\_display\_internal\_aliases
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "0"},{"label": "Новая настройка"}]}]} />

Показывать в EXPLAIN PLAN внутренние псевдонимы (например, \_\_table1) вместо псевдонимов, указанных в исходном запросе.

<div id="query_plan_enable_multithreading_after_window_functions">
  ## query\_plan\_enable\_multithreading\_after\_window\_functions
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Включает многопоточность после вычисления оконных функций, что позволяет выполнять потоковую обработку параллельно

<div id="query_plan_enable_optimizations">
  ## query\_plan\_enable\_optimizations
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Включает или отключает оптимизацию запросов на уровне плана запроса.

<Note>
  Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем эта настройка может измениться обратно несовместимым образом или быть удалена.
</Note>

Возможные значения:

* 0 — отключить все оптимизации на уровне плана запроса
* 1 — включить оптимизации на уровне плана запроса (при этом отдельные оптимизации по-прежнему можно отключить их собственными настройками)

<div id="query_plan_execute_functions_after_sorting">
  ## query\_plan\_execute\_functions\_after\_sorting
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Включает или отключает оптимизацию на уровне плана запроса, которая перемещает выражения после этапов сортировки.
Действует только если значение настройки [`query_plan_enable_optimizations`](/docs/ru/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) равно 1.

<Note>
  Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем настройка может измениться обратно несовместимым образом или быть удалена.
</Note>

Возможные значения:

* 0 - Отключить
* 1 - Включить

<div id="query_plan_filter_push_down">
  ## query\_plan\_filter\_push\_down
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Включает или отключает оптимизацию на уровне плана запроса, которая опускает фильтры ниже в плане выполнения.
Применяется только в том случае, если значение настройки [query\_plan\_enable\_optimizations](/docs/ru/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) равно 1.

<Note>
  Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем эта настройка может измениться обратно несовместимым образом или быть удалена.
</Note>

Возможные значения:

* 0 - Отключить
* 1 - Включить

<div id="query_plan_join_shard_by_pk_ranges">
  ## query\_plan\_join\_shard\_by\_pk\_ranges
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "0"},{"label": "новая настройка"}]}]} />

Применять сегментирование для JOIN, если ключи JOIN в обеих таблицах содержат префикс PRIMARY KEY. Поддерживается для алгоритмов hash, parallel\_hash и full\_sorting\_merge. Обычно не ускоряет запросы, но может снизить потребление памяти.

<div id="query_plan_join_swap_table">
  ## query\_plan\_join\_swap\_table
</div>

<SettingsInfoBlock type="BoolAuto" default_value="auto" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": "auto"},{"label": "Новая настройка. Раньше всегда выбиралась правая таблица."}]}]} />

Определяет, какая сторона JOIN должна использоваться как build-таблица (также называемая inner — она помещается в hash-таблицу при hash JOIN) в плане запроса. Эта настройка поддерживается только для strictness `ALL` с условием `JOIN ON`. Возможные значения:

* 'auto': позволить planner'у определить, какую таблицу использовать как build-таблицу.
* 'false': никогда не менять таблицы местами (build-таблицей является правая таблица).
* 'true': всегда менять таблицы местами (build-таблицей является левая таблица).

<div id="query_plan_lift_up_array_join">
  ## query\_plan\_lift\_up\_array\_join
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Включает или отключает оптимизацию на уровне плана запроса, которая перемещает ARRAY JOIN выше в плане выполнения.
Работает только в том случае, если для настройки [query\_plan\_enable\_optimizations](/docs/ru/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) установлено значение 1.

<Note>
  Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем эта настройка может измениться обратно несовместимым образом или быть удалена.
</Note>

Возможные значения:

* 0 - Отключить
* 1 - Включить

<div id="query_plan_lift_up_union">
  ## query\_plan\_lift\_up\_union
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Включает или отключает оптимизацию на уровне плана запроса, которая переносит более крупные поддеревья плана запроса в union, чтобы открыть возможности для дальнейших оптимизаций.
Действует только если значение настройки [`query_plan_enable_optimizations`](/docs/ru/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) равно 1.

<Note>
  Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем эта настройка может измениться обратно несовместимым образом или быть удалена.
</Note>

Возможные значения:

* 0 - Отключить
* 1 - Включить

<div id="query_plan_max_limit_for_join_lazy_indexing">
  ## query\_plan\_max\_limit\_for\_join\_lazy\_indexing
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "1000"},{"label": "Добавлена новая настройка для управления максимальным значением, при котором можно использовать план запроса для отложенной оптимизации индексирования в JOIN. Если значение равно нулю, ограничение отсутствует"}]}]} />

Управляет максимальным значением, при котором можно использовать план запроса для отложенной оптимизации индексирования в JOIN. Если значение равно нулю, ограничение отсутствует.

<div id="query_plan_max_limit_for_lazy_materialization">
  ## query\_plan\_max\_limit\_for\_lazy\_materialization
</div>

<SettingsInfoBlock type="UInt64" default_value="10000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "10"},{"label": "Добавлена новая настройка для управления максимальным значением LIMIT, при котором можно использовать план запроса для оптимизации отложенной материализации. Если равно нулю, ограничение отсутствует"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "10000"},{"label": "Лимит увеличен после повышения производительности"}]}, {"id": "row-3","items": [{"label": "25.11"},{"label": "100"},{"label": "Более оптимально"}]}]} />

Управляет максимальным значением LIMIT, при котором можно использовать план запроса для оптимизации отложенной материализации. Если равно нулю, ограничение отсутствует.

<div id="query_plan_max_limit_for_top_k_optimization">
  ## query\_plan\_max\_limit\_for\_top\_k\_optimization
</div>

<SettingsInfoBlock type="UInt64" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1000"},{"label": "Новая настройка"}]}]} />

Определяет максимальное значение LIMIT, при котором выполняется оценка плана запроса для оптимизации TopK с использованием индекса пропуска данных minmax и динамической фильтрации по порогу. Если значение равно 0, ограничение отсутствует.

<div id="query_plan_max_optimizations_to_apply">
  ## query\_plan\_max\_optimizations\_to\_apply
</div>

<SettingsInfoBlock type="UInt64" default_value="10000" />

Ограничивает общее число оптимизаций, применяемых к плану запроса; см. настройку [query\_plan\_enable\_optimizations](/docs/ru/reference/settings/session-settings/query-plan#query_plan_enable_optimizations).
Полезно, чтобы избежать длительной оптимизации сложных запросов.
В запросе EXPLAIN PLAN после достижения этого предела применение оптимизаций прекращается, и план возвращается как есть.
При обычном выполнении запроса, если фактическое число оптимизаций превышает значение этой настройки, генерируется исключение.

<Note>
  Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем она может измениться обратно несовместимым образом или быть удалена.
</Note>

<div id="query_plan_max_set_size_for_projection_match">
  ## query\_plan\_max\_set\_size\_for\_projection\_match
</div>

<SettingsInfoBlock type="UInt64" default_value="10000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "10000"},{"label": "Добавлена новая настройка, которая ограничивает затраты на хеширование содержимого множеств в условии `IN` в механизме сопоставления проекций (сейчас: aggregate projection). Множества, размер которых превышает лимит, считаются несовпадающими. Ноль полностью отключает сравнение хешей содержимого (значение compatibility: сопоставление projection никогда не бывает успешным для узлов с множествами `IN`)."}]}]} />

Максимальное количество строк во множестве условия `IN`, для которого механизм сопоставления проекций вычисляет и сравнивает хеши содержимого при определении равенства двух множеств. Множества, размер которых превышает это значение, считаются несовпадающими, и проекция пропускается. Ноль полностью отключает сравнение хешей содержимого: сопоставление проекций никогда не бывает успешным для узлов, содержащих множества условия `IN`.

Используется механизмом сопоставления aggregate projection (и любым будущим механизмом сопоставления проекций, которому потребуется сравнивать множества условия `IN`). Вычисление хеша содержимого имеет сложность `O(N log N)` по числу элементов множества; эта настройка ограничивает затраты на этапе планирования, когда в запросе или проекции присутствует много условий `IN`.

<div id="query_plan_max_step_description_length">
  ## query\_plan\_max\_step\_description\_length
</div>

<SettingsInfoBlock type="UInt64" default_value="500" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "500"},{"label": "Новая настройка"}]}]} />

Максимальная длина описания шага в EXPLAIN PLAN.

<div id="query_plan_merge_expression_into_join">
  ## query\_plan\_merge\_expression\_into\_join
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.7"},{"label": "1"},{"label": "Новая настройка. Разрешает объединять шаг Expression со шагом JOIN при оптимизации порядка JOIN."}]}]} />

Разрешает объединять выражения в шаг JOIN при оптимизации порядка JOIN.

<div id="query_plan_merge_expressions">
  ## query\_plan\_merge\_expressions
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Включает или отключает оптимизацию на уровне плана запроса, которая объединяет последовательные фильтры.
Действует только если значение настройки [query\_plan\_enable\_optimizations](/docs/ru/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) равно 1.

<Note>
  Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем эта настройка может измениться обратно несовместимым образом или быть удалена.
</Note>

Возможные значения:

* 0 - Отключено
* 1 - Включено

<div id="query_plan_merge_filter_into_join_condition">
  ## query\_plan\_merge\_filter\_into\_join\_condition
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "1"},{"label": "Добавлена новая настройка: слияние фильтра с условием JOIN"}]}]} />

Позволяет объединять фильтр с условием `JOIN` и преобразовывать `CROSS JOIN` в `INNER`.

<div id="query_plan_merge_filters">
  ## query\_plan\_merge\_filters
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "0"},{"label": "Позволяет объединять фильтры в плане запроса"}]}, {"id": "row-2","items": [{"label": "24.11"},{"label": "1"},{"label": "Позволяет объединять фильтры в плане запроса. Это необходимо для корректной поддержки проталкивания фильтров при использовании анализатора."}]}]} />

Позволяет объединять фильтры в плане запроса.

<div id="query_plan_min_columns_for_join_lazy_indexing">
  ## query\_plan\_min\_columns\_for\_join\_lazy\_indexing
</div>

<SettingsInfoBlock type="UInt64" default_value="3" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "3"},{"label": "Управляет минимальным количеством столбцов полезной нагрузки из левой части, необходимым для включения оптимизации отложенной индексации в JOIN"}]}]} />

Управляет минимальным количеством столбцов полезной нагрузки из левой части, необходимым для включения оптимизации отложенной индексации в JOIN. 0 означает, что оптимизация отключена.

<div id="query_plan_optimize_join_order_algorithm">
  ## query\_plan\_optimize\_join\_order\_algorithm
</div>

<ExperimentalBadge />

<SettingsInfoBlock type="JoinOrderAlgorithm" default_value="greedy" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "greedy"},{"label": "новая экспериментальная настройка."}]}]} />

Определяет, какие алгоритмы порядка 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 или несвязанных компонентов), в качестве резервного варианта используется следующий.

<div id="query_plan_optimize_join_order_limit">
  ## query\_plan\_optimize\_join\_order\_limit
</div>

<SettingsInfoBlock type="UInt64" default_value="10" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "1"},{"label": "Новая настройка"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "10"},{"label": "По умолчанию разрешено переупорядочивание JOIN для большего числа таблиц"}]}]} />

Оптимизирует порядок JOIN в рамках одного подзапроса. Пока поддерживается только в очень ограниченном числе случаев.
Значение задаёт максимальное количество таблиц, для которых выполняется оптимизация.

<div id="query_plan_optimize_join_order_max_searched_plans">
  ## query\_plan\_optimize\_join\_order\_max\_searched\_plans
</div>

<ExperimentalBadge />

<SettingsInfoBlock type="UInt64" default_value="100000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "100000"},{"label": "Новая настройка, ограничивающая число частичных планов, которые оптимизатор порядка JOIN может перебрать, прежде чем перейти к следующему алгоритму."}]}]} />

Максимальное число частичных планов, которые оптимизатор порядка JOIN может перебрать, прежде чем прекратить поиск и перейти к следующему алгоритму в `query_plan_optimize_join_order_algorithm`.
Это детерминированно ограничивает время оптимизации (независимо от реального времени) на плотных графах JOIN, таких как клики или звёзды, где пространство поиска растёт экспоненциально.
Установите 0, чтобы отключить ограничение. Не влияет на значение по умолчанию `query_plan_optimize_join_order_limit`, при котором поиск всегда остаётся значительно ниже этого предела.

<div id="query_plan_optimize_join_order_randomize">
  ## query\_plan\_optimize\_join\_order\_randomize
</div>

<ExperimentalBadge />

<SettingsInfoBlock type="UInt64" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "Новая настройка для случайного изменения статистики порядка JOIN при тестировании."}]}]} />

Если значение не равно нулю, оптимизатор порядка JOIN использует случайно сгенерированные кардинальности и NDV вместо реальной статистики.
Если задано значение 1, генерируется начальное значение генератора случайных чисел; если задано значение > 1, это значение используется напрямую как начальное значение генератора случайных чисел.
Это предназначено для тестирования и помогает выявлять ошибки, вызванные различным порядком JOIN.

<div id="query_plan_optimize_lazy_final">
  ## query\_plan\_optimize\_lazy\_final
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "Новая настройка для оптимизации чтения с FINAL в ReplacingMergeTree с использованием анализа индекса на основе множества"}]}]} />

Оптимизирует чтение с FINAL в ReplacingMergeTree путем построения множества первичных ключей и его использования при анализе индекса.

<div id="query_plan_optimize_lazy_materialization">
  ## query\_plan\_optimize\_lazy\_materialization
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "1"},{"label": "Добавлена новая настройка, позволяющая использовать план запроса для оптимизации отложенной материализации"}]}]} />

Использовать план запроса для оптимизации отложенной материализации.

<div id="query_plan_optimize_prewhere">
  ## query\_plan\_optimize\_prewhere
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "1"},{"label": "Разрешает проталкивать фильтр в выражение PREWHERE для поддерживаемых хранилищ"}]}]} />

Разрешает проталкивать фильтр в выражение PREWHERE для поддерживаемых хранилищ

<div id="query_plan_push_down_limit">
  ## query\_plan\_push\_down\_limit
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Включает или отключает оптимизацию на уровне плана запроса, которая перемещает LIMIT ниже в плане выполнения.
Настройка действует только в том случае, если значение [query\_plan\_enable\_optimizations](/docs/ru/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) равно 1.

<Note>
  Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем она может измениться обратно несовместимым образом или быть удалена.
</Note>

Возможные значения:

* 0 - Отключить
* 1 - Включить

<div id="query_plan_push_limit_by_into_sort">
  ## query\_plan\_push\_limit\_by\_into\_sort
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "1"},{"label": "Новая настройка, которая переносит LIMIT BY для каждого потока в конвейер сортировки, когда столбцы LIMIT BY являются префиксом ORDER BY, уменьшая количество строк, проходящих через финальное слияние."}]}]} />

Включает или отключает оптимизацию на уровне плана запроса для запросов `ORDER BY ... LIMIT BY`. Когда столбцы `LIMIT BY` являются префиксом предложения `ORDER BY`, `LIMIT BY` применяется в каждом параллельном отсортированном потоке до слияния потоков в один, что уменьшает количество строк, обрабатываемых на этапе финального слияния и на последующих стадиях конвейера. Ускоряет запросы, в которых `LIMIT BY` отбрасывает значительную часть строк.

Действует только если значение настройки [query\_plan\_enable\_optimizations](/docs/ru/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) равно 1.

Возможные значения:

* 0 - Отключить
* 1 - Включить

<div id="query_plan_read_in_order">
  ## query\_plan\_read\_in\_order
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Включает или отключает оптимизацию чтения in-order на уровне плана запроса.
Действует, только если значение настройки [`query_plan_enable_optimizations`](/docs/ru/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) равно 1.

<Note>
  Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем эта настройка может измениться обратно несовместимым образом или быть удалена.
</Note>

Возможные значения:

* 0 - Отключено
* 1 - Включено

<div id="query_plan_read_in_order_through_join">
  ## query\_plan\_read\_in\_order\_through\_join
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1"},{"label": "новая настройка"}]}]} />

Сохранять упорядоченное чтение из левой таблицы при выполнении операций JOIN, чтобы его можно было использовать на последующих этапах.

<div id="query_plan_remove_redundant_distinct">
  ## query\_plan\_remove\_redundant\_distinct
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.2"},{"label": "1"},{"label": "Удаление избыточного шага Distinct в плане запроса"}]}]} />

Включает или отключает оптимизацию на уровне плана запроса, которая удаляет избыточные шаги DISTINCT.
Действует только если значение настройки [`query_plan_enable_optimizations`](/docs/ru/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) равно 1.

<Note>
  Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем эта настройка может измениться обратно несовместимым образом или быть удалена.
</Note>

Возможные значения:

* 0 - Отключить
* 1 - Включить

<div id="query_plan_remove_redundant_sorting">
  ## query\_plan\_remove\_redundant\_sorting
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.1"},{"label": "1"},{"label": "Удаляет избыточную сортировку в плане запроса. Например, шаги сортировки, связанные с предложениями ORDER BY во вложенных запросах"}]}]} />

Включает или отключает оптимизацию на уровне плана запроса, удаляющую избыточные шаги сортировки, например во вложенных запросах.
Действует только в том случае, если для настройки [`query_plan_enable_optimizations`](/docs/ru/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) установлено значение 1.

<Note>
  Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем эта настройка может измениться обратно несовместимым образом или быть удалена.
</Note>

Возможные значения:

* 0 - Отключено
* 1 - Включено

<div id="query_plan_remove_unused_columns">
  ## query\_plan\_remove\_unused\_columns
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1"},{"label": "Новая настройка. Добавлена оптимизация для удаления неиспользуемых столбцов в плане запроса."}]}]} />

Включает или отключает оптимизацию на уровне плана запроса, которая пытается удалять неиспользуемые столбцы (как входные, так и выходные) из шагов плана запроса.
Действует только если значение настройки [query\_plan\_enable\_optimizations](/docs/ru/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) равно 1.

<Note>
  Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем настройка может измениться обратно несовместимым образом или быть удалена.
</Note>

Возможные значения:

* 0 - Отключено
* 1 - Включено

<div id="query_plan_reuse_storage_ordering_for_window_functions">
  ## query\_plan\_reuse\_storage\_ordering\_for\_window\_functions
</div>

**Псевдонимы**: `optimize_read_in_window_order`

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "0"},{"label": "Эта логика по умолчанию отключена."}]}]} />

Включает или отключает оптимизацию на уровне плана запроса, которая использует порядок сортировки в хранилище при сортировке для оконных функций.
Действует только если значение параметра [`query_plan_enable_optimizations`](/docs/ru/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) равно 1.

<Note>
  Это параметр экспертного уровня, который разработчикам следует использовать только для отладки. В будущем параметр может измениться обратно несовместимым образом или быть удалён.
</Note>

Возможные значения:

* 0 - Отключено
* 1 - Включено

<div id="query_plan_split_filter">
  ## query\_plan\_split\_filter
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<Note>
  Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем эта настройка может измениться обратно несовместимым образом или быть удалена.
</Note>

Включает или отключает оптимизацию на уровне плана запроса, которая разбивает фильтры на выражения.
Действует только в том случае, если значение настройки [query\_plan\_enable\_optimizations](/docs/ru/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) равно 1.

Возможные значения:

* 0 - Отключить
* 1 - Включить

<div id="query_plan_text_index_add_hint">
  ## query\_plan\_text\_index\_add\_hint
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1"},{"label": "новая настройка"}]}]} />

Разрешает добавлять подсказку (дополнительный предикат) для фильтрации, построенной на основе инвертированного текстового индекса, в плане запроса.

<div id="query_plan_top_k_through_join">
  ## query\_plan\_top\_k\_through\_join
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1"},{"label": "Новая настройка для включения оптимизации на уровне плана запроса, которая продвигает ORDER BY ... LIMIT n через LEFT\/RIGHT JOIN, когда ключ сортировки ссылается только на сохраняемую сторону."}]}]} />

Включает или отключает оптимизацию на уровне плана запроса, которая продвигает `ORDER BY ... LIMIT n` через JOIN, если ключ сортировки ссылается только на столбцы сохраняемой стороны JOIN (LEFT/RIGHT). Ограничивает, сколько строк должен вернуть вход сохраняемой стороны до выполнения JOIN.
Действует только если для настройки [query\_plan\_enable\_optimizations](/docs/ru/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) установлено значение 1.

Возможные значения:

* 0 - Отключено
* 1 - Включено

<div id="query_plan_try_use_vector_search">
  ## query\_plan\_try\_use\_vector\_search
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "1"},{"label": "Новая настройка"}]}]} />

Включает или отключает оптимизацию на уровне плана запроса, которая пытается использовать индекс векторного сходства.
Действует только в том случае, если значение настройки [`query_plan_enable_optimizations`](/docs/ru/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) равно 1.

<Note>
  Это настройка экспертного уровня, которую разработчикам следует использовать только для отладки. В будущем настройка может измениться обратно несовместимым образом или быть удалена.
</Note>

Возможные значения:

* 0 - Отключено
* 1 - Включено
