> ## 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.

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

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

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>;
};

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

<div id="optimize_and_compare_chain">
  ## optimize\_and\_compare\_chain
</div>

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

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

Добавляет сравнения с константой в цепочках AND для улучшения фильтрации. Поддерживаются операторы `<`, `<=`, `>`, `>=`, `=` и их сочетания. Например, `(a < b) AND (b < c) AND (c < 5)` будет преобразовано в `(a < b) AND (b < c) AND (c < 5) AND (b < 5) AND (a < 5)`.

<div id="optimize_and_compare_chain_max_hash_work">
  ## optimize\_and\_compare\_chain\_max\_hash\_work
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.7"},{"label": "5000000"},{"label": "Новая настройка, ограничивающая объём работы оптимизации `optimize_and_compare_chain` (измеряемый количеством хешируемых узлов дерева запроса), чтобы она не занимала основное время при анализе запросов с очень большим числом или очень длинными цепочками сравнений, объединённых `AND`. Прежнее значение `0` (без ограничений) воспроизводит поведение до 26.7, когда оптимизация ничем не ограничивалась, поэтому при `compatibility`, установленном на более раннюю версию, транзитивные предикаты по-прежнему будут выводиться без бюджета. Установите `0`, чтобы отключить бюджет."}]}]} />

Бюджет работы для оптимизации `optimize_and_compare_chain` на этапе анализа запроса, измеряемый количеством узлов дерева запроса, хешируемых функцией `getTreeHash` (это основная стоимость данной оптимизации). Как только при применении этой оптимизации запрос хеширует больше узлов, чем задано этим значением, она перестаёт применяться для оставшейся части запроса. Это ограничивает время анализа для запросов с очень большим числом или очень длинными цепочками сравнений, объединённых `AND`, где иначе эта оптимизация может занимать основное время анализа, не давая никакого эффекта свёртки. Преждевременная остановка всегда безопасна: она лишь означает отказ от оптимизации и никогда не меняет результаты. Установите `0`, чтобы отключить бюджет (без ограничений).
