> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-postgresql-tls-support.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# ajustes de sesión de optimize_and_compare_chain_*

> Ajustes de sesión de ClickHouse en el grupo generado optimize_and_compare_chain_*.

export const VersionHistory = ({rows = []}) => {
  if (rows.length === 0) {
    return null;
  }
  const headers = ["Versión", "Valor predeterminado", "Comentario"];
  const border = "1px solid rgba(128, 128, 128, 0.3)";
  const cell = {
    border,
    padding: "0.25rem 0.5rem",
    textAlign: "start",
    verticalAlign: "top"
  };
  return <details className="not-prose" style={{
    border,
    borderRadius: "0.5rem",
    margin: "0.5rem 0",
    padding: "0.5rem 0.75rem",
    fontSize: "0.8125rem",
    lineHeight: "1.125rem"
  }}>
      <summary style={{
    cursor: "pointer",
    fontWeight: 600,
    opacity: 0.72
  }}>
        Historial de versiones
      </summary>
      <table style={{
    borderCollapse: "collapse",
    width: "100%",
    margin: "0.5rem 0 0"
  }}>
        <thead>
          <tr>
            {headers.map(header => <th key={header} style={{
    ...cell,
    fontWeight: 600,
    opacity: 0.72
  }}>
                {header}
              </th>)}
          </tr>
        </thead>
        <tbody>
          {rows.map((row, row_index) => <tr key={row.id ?? row_index}>
              {(row.items ?? []).map((item, item_index) => <td key={item_index} style={{
    ...cell,
    overflowWrap: "anywhere"
  }}>
                  {item?.label}
                </td>)}
            </tr>)}
        </tbody>
      </table>
    </details>;
};

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
  }}>Tipo</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{type}</div>
      <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>Predeterminado</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{default_value}</div>
      {changeable_without_restart && <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>
          Modificable sin reiniciar
        </div>}
      {changeable_without_restart && <div style={{
    overflowWrap: "anywhere"
  }}>
          {changeable_without_restart}
        </div>}
    </div>;
};

Estos ajustes están disponibles en [system.settings](/es/reference/system-tables/settings) y se autogeneran a partir del [código fuente](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" />

Propaga las comparaciones con constantes en cadenas AND para mejorar la capacidad de filtrado. Admite los operadores `<`, `<=`, `>`, `>=`, `=` y combinaciones de ellos. Por ejemplo, `(a < b) AND (b < c) AND (c < 5)` sería `(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" />

Presupuesto de trabajo para la optimización `optimize_and_compare_chain` durante el análisis de consultas, medido por la cantidad de nodos del árbol de consulta para los que `getTreeHash` calcula el hash (el costo dominante de esta optimización). Una vez que una consulta ha calculado el hash de más nodos que este límite mientras aplica la optimización, deja de aplicarla durante el resto de la consulta. Esto limita el tiempo de análisis de consultas con muchísimas cadenas `AND` de comparaciones o cadenas `AND` muy grandes, en las que, de otro modo, la optimización podría llegar a dominar el análisis sin simplificar nada. Detenerse antes siempre es seguro: solo se renuncia a una optimización y nunca se alteran los resultados. Establézcalo en `0` para desactivar el presupuesto (ilimitado).
