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

# paramètres de session optimize_and_compare_chain_*

> Paramètres de session ClickHouse du groupe généré 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
  }}>Type</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{type}</div>
      <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>Par défaut</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{default_value}</div>
      {changeable_without_restart && <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>
          Modifiable sans redémarrage
        </div>}
      {changeable_without_restart && <div style={{
    overflowWrap: "anywhere"
  }}>
          {changeable_without_restart}
        </div>}
    </div>;
};

Ces paramètres sont disponibles dans [system.settings](/docs/fr/reference/system-tables/settings) et sont générés automatiquement à partir de la [source](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": "Nouveau paramètre"}]}]} />

Propage les comparaisons avec des constantes dans les chaînes AND afin d'améliorer le filtrage. Prend en charge les opérateurs `<`, `<=`, `>`, `>=`, `=` ainsi que leurs combinaisons. Par exemple, `(a < b) AND (b < c) AND (c < 5)` deviendrait `(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": "Nouveau paramètre qui borne le travail de l’optimisation `optimize_and_compare_chain` (mesuré en nœuds d’arbre de requête hachés) afin qu’elle ne monopolise pas l’analyse des requêtes comportant de très nombreuses chaînes `AND` de comparaisons ou des chaînes très longues. La valeur précédente `0` (illimitée) reproduit le comportement antérieur à la version 26.7, où l’optimisation n’était pas bornée ; ainsi, `compatibility` défini sur une version antérieure continue de dériver des prédicats transitifs sans budget. Définissez `0` pour désactiver le budget."}]}]} />

Budget de travail de l’optimisation `optimize_and_compare_chain` pendant l’analyse de requête, mesuré en nombre de nœuds d’arbre de requête hachés par `getTreeHash` (le coût dominant de cette optimisation). Lorsqu’une requête a haché plus de ce nombre de nœuds pendant l’application de l’optimisation, celle-ci cesse d’être appliquée pour le reste de la requête. Cela borne le temps d’analyse des requêtes comportant de très nombreuses chaînes `AND` de comparaisons ou des chaînes très longues, pour lesquelles l’optimisation pourrait sinon monopoliser l’analyse sans rien simplifier. Cet arrêt anticipé est toujours sûr : il se contente de renoncer à une optimisation et ne modifie jamais les résultats. Définissez `0` pour désactiver le budget (illimité).
