> ## 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_limit_*

> Paramètres de session ClickHouse du groupe optimize_limit_* généré.

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 du [code source](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/Settings.cpp).

<div id="optimize_limit_by_function_keys">
  ## optimize\_limit\_by\_function\_keys
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "1"},{"label": "Nouveau paramètre qui élimine les clés LIMIT BY qui sont des fonctions d'autres clés LIMIT BY."}]}]} />

Élimine, dans la section LIMIT BY, les clés qui sont des fonctions d'autres clés.

Exemple : `LIMIT 5 BY x, f(x)` devient `LIMIT 5 BY x`.

<div id="optimize_limit_by_in_order">
  ## optimize\_limit\_by\_in\_order
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "1"},{"label": "Nouveau paramètre pour optimiser les requêtes `LIMIT BY` lorsque les colonnes `BY` constituent un préfixe de la clé de tri de la table."}]}]} />

Optimise les requêtes `SELECT ... LIMIT N BY <cols>` lorsque `<cols>` (dans n’importe quel ordre) constituent un préfixe de la clé de tri de la table, ou en constituent un après que `WHERE col = const` a fixé les colonnes de tête. Lorsque ce paramètre est activé, la source lit les données dans l’ordre de la clé primaire, de sorte que les lignes ayant les mêmes valeurs pour les colonnes `BY` arrivent de façon contiguë dans chaque flux. Lorsque les données arrivent dans un seul flux trié, `LIMIT BY` les filtre en mode streaming avec une mémoire en O(1), au lieu de construire une table de hachage pour chaque combinaison distincte de colonnes `BY` rencontrée. Lorsque les données triées arrivent dans plusieurs flux et que les mêmes valeurs `BY` peuvent apparaître dans plusieurs d’entre eux, chaque flux est d’abord préfiltré en mode streaming jusqu’à `LIMIT + OFFSET` lignes au maximum par groupe, puis les flux sont combinés et un `LIMIT BY` final basé sur le hachage déduplique les groupes répartis sur plusieurs flux. Cette passe finale conserve toujours une entrée pour chaque combinaison distincte de colonnes `BY`, mais elle ne traite que les lignes préfiltrées.
