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

# paramètres de session enable_*

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

export const ExperimentalBadge = () => {
  return <a href="https://clickhouse.com/docs/reference/settings/beta-and-experimental-features#experimental-features" 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>
            Fonctionnalité expérimentale
        </a>;
};

export const VersionHistory = ({rows = []}) => {
  if (rows.length === 0) {
    return null;
  }
  const headers = ["Version", "Valeur par défaut", "Commentaire"];
  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
  }}>
        Historique des versions
      </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
  }}>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](/fr/reference/system-tables/settings) et sont générés automatiquement à partir du [source](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/Settings.cpp).

<div id="enable_adaptive_aggregator">
  ## enable\_adaptive\_aggregator
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "1"},{"label": "Nouveau paramètre permettant d’activer l’agrégation `GROUP BY` adaptative, qui fige la table de hachage locale de chaque thread lorsqu’elle atteint `adaptive_aggregator_freeze_threshold` clés, afin que les clés fréquentes continuent d’être agrégées dans les petites tables locales, tandis que les clés rares sont routées selon leur hash vers des files d’attente par bucket et agrégées exactement une fois lors de la fusion parallèle des buckets ; les clés rares sont ainsi stockées et traitées une seule fois au lieu d’une fois par thread."}]}]} />

Active l’algorithme `GROUP BY` adaptatif : chaque thread agrège dans sa table de hachage locale jusqu’à ce qu’elle atteigne `adaptive_aggregator_freeze_threshold` clés, puis celle-ci est figée. Les lignes associées aux clés déjà rencontrées (fréquentes) continuent alors de la mettre à jour sur place, tandis que les nouvelles clés (rares) sont routées selon leur hash vers des files d’attente par bucket et agrégées exactement une fois lors de la fusion parallèle des buckets. Les clés fréquentes restent dans de petites tables tenant en cache, tandis que les clés rares ne sont stockées et traitées qu’une seule fois, au lieu d’une fois par thread.

Les paramètres d’agrégation externe (`max_bytes_before_external_group_by`, `max_bytes_ratio_before_external_group_by`) sont respectés : au-delà du seuil, les files d’attente sont vidées de manière anticipée dans la table partagée et, si cela ne suffit pas à repasser sous ce seuil, la table partagée est déversée sur disque via l’agrégation externe ordinaire.

<div id="enable_adaptive_memory_spill_scheduler">
  ## enable\_adaptive\_memory\_spill\_scheduler
</div>

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.2"},{"label": "0"},{"label": "Nouveau paramètre. Active le déversement adaptatif des données en mémoire vers un stockage externe."}]}]} />

Déclenche le processeur pour déverser de manière adaptative les données vers un stockage externe. Seul grace join est actuellement pris en charge.

<div id="enable_add_distinct_to_in_subqueries">
  ## enable\_add\_distinct\_to\_in\_subqueries
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "Nouveau paramètre permettant de réduire la taille des tables temporaires transférées pour les sous-requêtes `IN` distribuées."}]}]} />

Active `DISTINCT` dans les sous-requêtes `IN`. Ce paramètre implique un compromis : son activation peut réduire considérablement la taille des tables temporaires transférées pour les sous-requêtes `IN` distribuées et accélérer nettement le transfert de données entre les shards, en garantissant que seules des valeurs uniques sont envoyées.
Cependant, l’activation de ce paramètre ajoute des opérations de fusion supplémentaires sur chaque nœud, car la déduplication (`DISTINCT`) doit être effectuée. Utilisez ce paramètre lorsque le transfert réseau constitue un goulot d’étranglement et que le coût supplémentaire de fusion est acceptable.

<div id="enable_automatic_decision_for_merging_across_partitions_for_final">
  ## enable\_automatic\_decision\_for\_merging\_across\_partitions\_for\_final
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "Nouveau paramètre"}]}]} />

Si ce paramètre est activé, ClickHouse activera automatiquement cette optimisation lorsque l'expression de la clé de partition est déterministe et que toutes les colonnes utilisées dans cette expression sont incluses dans la clé primaire.
Cette déduction automatique garantit que les lignes ayant les mêmes valeurs de clé primaire appartiendront toujours à la même partition, ce qui permet d'éviter en toute sécurité les fusions entre partitions.

<div id="enable_cascades_optimizer">
  ## enable\_cascades\_optimizer
</div>

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "0"},{"label": "Nouveau paramètre expérimental."}]}]} />

Active l’optimiseur Cascades basé sur les coûts pour les plans de requêtes distribuées.
Ne prend effet qu’avec `make_distributed_plan = 1` : ce paramètre n’a à lui seul aucun effet sur la planification des requêtes sur un seul nœud.

<div id="enable_early_constant_folding">
  ## enable\_early\_constant\_folding
</div>

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

Active une optimisation de requête qui analyse les résultats des fonctions et des sous-requêtes, puis réécrit la requête si elle contient des constantes

<div id="enable_extended_results_for_datetime_functions">
  ## enable\_extended\_results\_for\_datetime\_functions
</div>

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

Active ou désactive le renvoi de résultats de type `Date32` avec une plage étendue (par rapport au type `Date`)
ou de type `DateTime64` avec une plage étendue (par rapport au type `DateTime`).

Valeurs possibles :

* `0` — Les fonctions renvoient `Date` ou `DateTime` pour tous les types d'arguments.
* `1` — Les fonctions renvoient `Date32` ou `DateTime64` pour les arguments `Date32` ou `DateTime64`, et `Date` ou `DateTime` dans les autres cas.

Le tableau ci-dessous montre le comportement de ce paramètre pour différentes fonctions de date et heure.

| Function                  | `enable_extended_results_for_datetime_functions = 0`                                                       | `enable_extended_results_for_datetime_functions = 1`                                                                                                   |
| ------------------------- | ---------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `toStartOfYear`           | Renvoie `Date` ou `DateTime`                                                                               | Renvoie `Date`/`DateTime` pour une entrée `Date`/`DateTime`<br />Renvoie `Date32`/`DateTime64` pour une entrée `Date32`/`DateTime64`                   |
| `toStartOfISOYear`        | Renvoie `Date` ou `DateTime`                                                                               | Renvoie `Date`/`DateTime` pour une entrée de type `Date`/`DateTime`<br />Renvoie `Date32`/`DateTime64` pour une entrée de type `Date32`/`DateTime64`   |
| `toStartOfQuarter`        | Renvoie `Date` ou `DateTime`                                                                               | Renvoie `Date`/`DateTime` pour une entrée `Date`/`DateTime`<br />Renvoie `Date32`/`DateTime64` pour une entrée `Date32`/`DateTime64`                   |
| `toStartOfMonth`          | Renvoie `Date` ou `DateTime`                                                                               | Renvoie `Date`/`DateTime` pour une entrée de type `Date`/`DateTime`<br />Renvoie `Date32`/`DateTime64` pour une entrée de type `Date32`/`DateTime64`   |
| `toStartOfWeek`           | Renvoie `Date` ou `DateTime`                                                                               | Renvoie `Date`/`DateTime` pour une entrée de type `Date`/`DateTime`<br />Renvoie `Date32`/`DateTime64` pour une entrée de type `Date32`/`DateTime64`   |
| `toLastDayOfWeek`         | Renvoie `Date` ou `DateTime`                                                                               | Renvoie `Date`/`DateTime` pour une valeur d’entrée `Date`/`DateTime`<br />Renvoie `Date32`/`DateTime64` pour une valeur d’entrée `Date32`/`DateTime64` |
| `toLastDayOfMonth`        | Renvoie `Date` ou `DateTime`                                                                               | Renvoie `Date`/`DateTime` pour une entrée de type `Date`/`DateTime`<br />Renvoie `Date32`/`DateTime64` pour une entrée de type `Date32`/`DateTime64`   |
| `toMonday`                | Renvoie `Date` ou `DateTime`                                                                               | Renvoie `Date`/`DateTime` pour une entrée de type `Date`/`DateTime`<br />Renvoie `Date32`/`DateTime64` pour une entrée de type `Date32`/`DateTime64`   |
| `toStartOfDay`            | Renvoie `DateTime`<br />*Remarque : résultats erronés pour les valeurs hors de la plage 1970-2149*         | Renvoie `DateTime` pour une entrée de type `Date`/`DateTime`<br />Renvoie `DateTime64` pour une entrée de type `Date32`/`DateTime64`                   |
| `toStartOfHour`           | Renvoie `DateTime`<br />*Remarque : résultats incorrects pour les valeurs en dehors de la plage 1970-2149* | Renvoie `DateTime` pour une entrée de type `Date`/`DateTime`<br />Renvoie `DateTime64` pour une entrée de type `Date32`/`DateTime64`                   |
| `toStartOfFifteenMinutes` | Renvoie `DateTime`<br />*Remarque : résultats incorrects pour les valeurs hors de la plage 1970-2149*      | Renvoie `DateTime` pour une entrée en `Date`/`DateTime`<br />Renvoie `DateTime64` pour une entrée en `Date32`/`DateTime64`                             |
| `toStartOfTenMinutes`     | Renvoie `DateTime`<br />*Remarque : résultats incorrects pour les valeurs en dehors de la plage 1970-2149* | Renvoie `DateTime` pour une entrée de type `Date`/`DateTime`<br />Renvoie `DateTime64` pour une entrée de type `Date32`/`DateTime64`                   |
| `toStartOfFiveMinutes`    | Renvoie `DateTime`<br />*Remarque : résultats incorrects pour des valeurs en dehors de la plage 1970-2149* | Renvoie `DateTime` pour une valeur d’entrée de type `Date`/`DateTime`<br />Renvoie `DateTime64` pour une valeur d’entrée de type `Date32`/`DateTime64` |
| `toStartOfMinute`         | Renvoie `DateTime`<br />*Remarque : résultats incorrects pour les valeurs hors de la plage 1970-2149*      | Renvoie `DateTime` pour une entrée `Date`/`DateTime`<br />Renvoie `DateTime64` pour une entrée `Date32`/`DateTime64`                                   |
| `timeSlot`                | Renvoie `DateTime`<br />*Remarque : résultats incorrects pour les valeurs hors de la plage 1970-2149*      | Renvoie `DateTime` pour un argument `Date`/`DateTime`<br />Renvoie `DateTime64` pour un argument `Date32`/`DateTime64`                                 |

<div id="enable_full_text_index">
  ## enable\_full\_text\_index
</div>

**Alias** : `allow_experimental_full_text_index`

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "L’index de texte est désormais GA"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "0"},{"label": "L’index de texte est passé en Bêta."}]}]} />

Si cette option est définie sur true, l’utilisation de l’index de texte est autorisée.

<div id="enable_global_with_statement">
  ## enable\_global\_with\_statement
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "21.2"},{"label": "1"},{"label": "Propage par défaut les instructions WITH aux requêtes UNION et à toutes les sous-requêtes"}]}]} />

Propage les instructions WITH aux requêtes UNION et à toutes les sous-requêtes

<div id="enable_hdfs_pread">
  ## enable\_hdfs\_pread
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "1"},{"label": "Nouveau paramètre."}]}]} />

Active ou désactive `pread` pour les fichiers HDFS. Par défaut, `hdfsPread` est utilisé. S'il est désactivé, `hdfsRead` et `hdfsSeek` sont utilisés pour lire les fichiers HDFS.

<div id="enable_http_compression">
  ## enable\_http\_compression
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "1"},{"label": "Cela devrait généralement être bénéfique"}]}]} />

Active ou désactive la compression des données dans la réponse à une requête HTTP.

Pour plus d'informations, consultez la [description de l'interface HTTP](/fr/concepts/features/interfaces/http).

Valeurs possibles :

* 0 — Désactivé.
* 1 — Activé.

<div id="enable_identifier_resolve_cache">
  ## enable\_identifier\_resolve\_cache
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "1"},{"label": "Nouveau paramètre permettant de contrôler le cache de résolution des identifiants dans l’analyseur de requêtes"}]}]} />

Active le cache de résolution des identifiants dans l’analyseur de requêtes. Le cache partage les nœuds d’alias résolus afin d’éviter une explosion de l’AST lorsque le même alias est utilisé plusieurs fois. Définissez-la sur false pour désactiver la mise en cache si vous suspectez des résultats incorrects.

<div id="enable_job_stack_trace">
  ## enable\_job\_stack\_trace
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "0"},{"label": "Le paramètre a été désactivé par défaut afin d’éviter toute surcharge de performances."}]}, {"id": "row-2","items": [{"label": "24.11"},{"label": "0"},{"label": "Active la collecte des traces de pile lors de l’ordonnancement du job. Désactivé par défaut afin d’éviter toute surcharge de performances."}]}]} />

Affiche la trace de pile du créateur du job lorsque celui-ci entraîne une exception. Désactivé par défaut afin d’éviter toute surcharge de performances.

<div id="enable_json_ast_dialect">
  ## enable\_json\_ast\_dialect
</div>

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "0"},{"label": "Nouveau paramètre permettant d’activer la valeur `clickhouse_json` du paramètre `dialect`, qui interprète les requêtes comme des AST JSON (la sortie de `parseQueryToJSON`) au lieu de texte SQL."}]}]} />

Active la valeur `clickhouse_json` du paramètre `dialect`.

Lorsque `dialect` est défini sur `clickhouse_json`, les requêtes sont interprétées comme des AST JSON
(la sortie de `parseQueryToJSON`) plutôt que comme du texte SQL. La requête `SET` est toujours
analysée comme du SQL standard afin de pouvoir revenir au dialecte précédent.

Exemple :

```sql theme={null}
SET enable_json_ast_dialect = 1;
SET dialect = 'clickhouse_json';

-- Subsequent queries are parsed as JSON ASTs:
{"type":"SelectWithUnionQuery", ...}
```

<div id="enable_lazy_columns_replication">
  ## enable\_lazy\_columns\_replication
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "1"},{"label": "Activer par défaut la réplication différée des colonnes dans JOIN et ARRAY JOIN"}]}, {"id": "row-2","items": [{"label": "25.10"},{"label": "0"},{"label": "Ajouter un paramètre pour activer la réplication différée des colonnes dans JOIN et ARRAY JOIN"}]}]} />

Active la réplication différée des colonnes dans `JOIN`, `ARRAY JOIN`, ainsi que dans les captures lambda de fonctions d’ordre supérieur (p. ex. `arrayMap`). Cela permet d'éviter de copier inutilement plusieurs fois les mêmes lignes en mémoire.

<div id="enable_materialized_cte">
  ## enable\_materialized\_cte
</div>

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "0"},{"label": "Nouveau paramètre"}]}]} />

Active les expressions de table communes matérialisées ; ce paramètre est prioritaire sur enable\_global\_with\_statement

<div id="enable_memory_bound_merging_of_aggregation_results">
  ## enable\_memory\_bound\_merging\_of\_aggregation\_results
</div>

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

Active la stratégie de fusion des résultats d’agrégation limitée par la mémoire.

<div id="enable_multiple_prewhere_read_steps">
  ## enable\_multiple\_prewhere\_read\_steps
</div>

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

Déplace davantage de conditions de WHERE vers PREWHERE, et effectue les lectures sur disque ainsi que le filtrage en plusieurs étapes s’il y a plusieurs conditions combinées avec AND

<div id="enable_named_columns_in_function_tuple">
  ## enable\_named\_columns\_in\_function\_tuple
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "0"},{"label": "Génère des tuples nommés dans la fonction tuple() lorsque tous les noms sont uniques et peuvent être considérés comme des identifiants non quotés."}]}, {"id": "row-2","items": [{"label": "24.10"},{"label": "0"},{"label": "Désactivé dans l’attente d’améliorations ergonomiques"}]}]} />

Génère des tuples nommés dans la fonction tuple() lorsque tous les noms sont uniques et peuvent être considérés comme des identifiants non quotés.

<div id="enable_order_by_all">
  ## enable\_order\_by\_all
</div>

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

Active ou désactive le tri à l’aide de la syntaxe `ORDER BY ALL`, voir [ORDER BY](/fr/reference/statements/select/order-by).

Valeurs possibles :

* 0 — Désactive `ORDER BY ALL`.
* 1 — Active `ORDER BY ALL`.

**Exemple**

Requête :

```sql theme={null}
CREATE TABLE TAB(C1 Int, C2 Int, ALL Int) ENGINE=Memory();

INSERT INTO TAB VALUES (10, 20, 30), (20, 20, 10), (30, 10, 20);

SELECT * FROM TAB ORDER BY ALL; -- returns an error that ALL is ambiguous

SELECT * FROM TAB ORDER BY ALL SETTINGS enable_order_by_all = 0;
```

Résultat :

```text theme={null}
┌─C1─┬─C2─┬─ALL─┐
│ 20 │ 20 │  10 │
│ 30 │ 10 │  20 │
│ 10 │ 20 │  30 │
└────┴────┴─────┘
```

<div id="enable_packed_string_keys_in_aggregation">
  ## enable\_packed\_string\_keys\_in\_aggregation
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "1"},{"label": "Nouveau paramètre permettant d’activer ou de désactiver la table de hachage basée sur `PackedStringRef` pour les `GROUP BY` avec une seule clé `String`. previous_value=false afin que la `compatibility` avec les versions antérieures à 26.8 rétablisse la méthode legacy basée sur `StringHashTable`, y compris sa répartition en buckets à deux niveaux."}]}]} />

Utilise une table de hachage indexée par des références de chaînes compactes de 16 octets (`PackedStringRef`) pour les `GROUP BY` comportant une seule clé `String` non nullable. Les clés d’au plus 11 octets sont stockées directement dans la référence compacte ; les clés plus longues sont référencées dans une arène.
Cette méthode est plus rapide pour la plupart des workloads, mais peut être plus lente que la méthode legacy pour les `GROUP BY` avec très peu de clés distinctes de plus de 11 octets (en particulier de 12 à 24 octets), car la table de hachage legacy conserve les clés directement dans la cellule, tandis que la table compacte déréférence le pointeur vers l’arène à chaque recherche.
Lorsqu’elle est désactivée, la méthode legacy basée sur `StringHashTable` (celle utilisée par défaut avant la version 26.8) est employée.

Tous les serveurs participant à une requête distribuée doivent utiliser la même valeur : avec `distributed_aggregation_memory_efficient`, les numéros de buckets à deux niveaux dépendent du hash de la clé, qui diffère selon la méthode. Des serveurs utilisant des valeurs différentes pour ce paramètre peuvent donc répartir une même clé dans différents buckets et produire un résultat fusionné incorrect. Pour garantir cette cohérence, l’initiateur transmet toujours sa valeur effective avec les requêtes secondaires (même lorsqu’elle provient uniquement des valeurs par défaut du serveur ou du profil), en remplaçant les valeurs par défaut des serveurs distants.

<div id="enable_parsing_to_custom_serialization">
  ## enable\_parsing\_to\_custom\_serialization
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "1"},{"label": "Nouveau paramètre"}]}]} />

Si la valeur est true, les données peuvent être analysées directement dans des colonnes avec une sérialisation personnalisée (par ex. Sparse), selon les indications de sérialisation obtenues depuis la table.

<div id="enable_producing_buckets_out_of_order_in_aggregation">
  ## enable\_producing\_buckets\_out\_of\_order\_in\_aggregation
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "1"},{"label": "Nouveau paramètre"}]}]} />

Permet à l'agrégation économe en mémoire (voir `distributed_aggregation_memory_efficient`) de produire des buckets dans le désordre.
Cela peut améliorer les performances lorsque la taille des buckets d'agrégation est inégale, en permettant à une réplique d'envoyer à l'initiateur des buckets dont les ID sont plus élevés alors qu'elle traite encore des buckets volumineux avec des ID plus faibles.
L'inconvénient est une consommation de mémoire potentiellement plus élevée.

<div id="enable_reads_from_query_cache">
  ## enable\_reads\_from\_query\_cache
</div>

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

Si cette option est activée, les résultats des requêtes `SELECT` sont lus depuis le [cache de requêtes](/fr/concepts/features/performance/caches/query-cache).

Valeurs possibles :

* 0 - Désactivé
* 1 - Activé

<div id="enable_s3_requests_logging">
  ## enable\_s3\_requests\_logging
</div>

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

Active une journalisation très détaillée des requêtes S3. À utiliser uniquement pour le débogage.

<div id="enable_scalar_subquery_optimization">
  ## enable\_scalar\_subquery\_optimization
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "19.18"},{"label": "1"},{"label": "Empêche les sous-requêtes scalaires de (dé)sérialiser de grandes valeurs scalaires et peut éviter d’exécuter la même sous-requête plusieurs fois"}]}]} />

Si ce paramètre est défini sur true, il empêche les sous-requêtes scalaires de (dé)sérialiser de grandes valeurs scalaires et peut éviter d’exécuter la même sous-requête plusieurs fois.

<div id="enable_scopes_for_with_statement">
  ## enable\_scopes\_for\_with\_statement
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.7"},{"label": "1"},{"label": "Nouveau paramètre pour la rétrocompatibilité avec l’ancien analyseur."}]}, {"id": "row-2","items": [{"label": "25.6"},{"label": "1"},{"label": "Nouveau paramètre pour la rétrocompatibilité avec l’ancien analyseur."}]}, {"id": "row-3","items": [{"label": "25.5"},{"label": "1"},{"label": "Nouveau paramètre pour la rétrocompatibilité avec l’ancien analyseur."}]}, {"id": "row-4","items": [{"label": "25.4"},{"label": "1"},{"label": "Nouveau paramètre pour la rétrocompatibilité avec l’ancien analyseur."}]}]} />

Si cette option est désactivée, les déclarations dans les clauses WITH parentes auront la même portée que si elles étaient déclarées dans la portée actuelle.

Notez qu’il s’agit d’un paramètre de compatibilité de l’analyseur permettant d’exécuter certaines requêtes non valides que l’ancien analyseur pouvait exécuter.

<div id="enable_sharding_aggregator">
  ## enable\_sharding\_aggregator
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "0"},{"label": "Nouveau paramètre permettant d’activer l’optimisation de `GROUP BY` partitionnée, qui répartit les lignes entre les threads en hachant la clé de regroupement, de sorte que chaque thread agrège un sous-ensemble distinct de clés sans phase de fusion ; cette approche est efficace pour les clés à forte cardinalité lorsque les données sont réparties uniformément."}]}]} />

Active l’optimisation de `GROUP BY` partitionnée, qui répartit les lignes entre les threads en hachant la clé de regroupement, de sorte que chaque thread agrège un sous-ensemble distinct de clés sans phase de fusion.

Cette approche est efficace pour les clés à forte cardinalité lorsque les données sont réparties uniformément, mais peut être moins performante en cas de distribution très déséquilibrée des clés ou de requêtes comportant très peu de clés distinctes.

Valeurs possibles :

* 0 — L’optimisation d’agrégation partitionnée est désactivée.
* 1 — L’optimisation d’agrégation partitionnée est activée.

<div id="enable_shared_storage_snapshot_in_query">
  ## enable\_shared\_storage\_snapshot\_in\_query
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "0"},{"label": "Nouveau paramètre permettant de partager l’instantané de stockage dans la requête"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "1"},{"label": "Active par défaut le partage de l’instantané de stockage dans la requête"}]}]} />

Si cette option est activée, toutes les sous-requêtes d’une même requête partageront le même StorageSnapshot pour chaque table.
Cela garantit une vue cohérente des données dans l’ensemble de la requête, même si la même table est accédée plusieurs fois.

Ce paramètre est nécessaire pour les requêtes où la cohérence interne des data parts est importante. Exemple :

```sql theme={null}
SELECT
    count()
FROM events
WHERE (_part, _part_offset) IN (
    SELECT _part, _part_offset
    FROM events
    WHERE user_id = 42
)
```

Sans ce paramètre, la requête externe et la requête interne peuvent s’exécuter sur des instantanés de données différents, ce qui peut entraîner des résultats incorrects.

Valeurs possibles :

* 0 - Désactivé
* 1 - Activé

<div id="enable_sharing_sets_for_mutations">
  ## enable\_sharing\_sets\_for\_mutations
</div>

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

Autorise le partage des objets Set créés pour les sous-requêtes IN entre différentes tâches d'une même mutation. Cela réduit l'utilisation de la mémoire et la consommation de CPU

<div id="enable_streaming_queries">
  ## enable\_streaming\_queries
</div>

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "0"},{"label": "Nouveau paramètre"}]}]} />

Autorise les requêtes en continu `SELECT ... FROM t STREAM [CURSOR '{...}']`.
Lorsqu’il est désactivé, toute expression de table utilisant le modificateur `STREAM` est rejetée
lors de la construction du plan. Il s’agit du paramètre de contrôle global de la
fonctionnalité de requêtes en continu ; des capacités supplémentaires peuvent être régies par leurs propres paramètres.

<div id="enable_time_time64_type">
  ## enable\_time\_time64\_type
</div>

**Alias** : `allow_experimental_time_time64_type`

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "0"},{"label": "Nouveau paramètre. Permet d’utiliser les nouveaux types de données expérimentaux Time et Time64."}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "1"},{"label": "Active les types Time et Time64 par défaut"}]}]} />

Permet de créer les types de données [Time](/fr/reference/data-types/time) et [Time64](/fr/reference/data-types/time64).

<div id="enable_unaligned_array_join">
  ## enable\_unaligned\_array\_join
</div>

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

Autorise ARRAY JOIN sur plusieurs tableaux de tailles différentes. Lorsque ce paramètre est activé, les tableaux sont redimensionnés à la longueur du plus long.

<div id="enable_url_encoding">
  ## enable\_url\_encoding
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "0"},{"label": "Modification de la valeur par défaut d’un paramètre existant"}]}]} />

Permet d’activer ou de désactiver le décodage/l’encodage du chemin dans l’URI des tables utilisant le moteur [URL](/fr/reference/engines/table-engines/special/url).

Désactivé par défaut.

<div id="enable_vertical_final">
  ## enable\_vertical\_final
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "1"},{"label": "Réactiver vertical final par défaut après correction du bogue"}]}, {"id": "row-2","items": [{"label": "24.1"},{"label": "1"},{"label": "Utiliser vertical final par défaut"}]}]} />

Si cette option est activée, les lignes dupliquées sont supprimées pendant FINAL en marquant les lignes comme supprimées, puis en les filtrant ultérieurement au lieu de les fusionner

<div id="enable_writes_to_query_cache">
  ## enable\_writes\_to\_query\_cache
</div>

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

Lorsqu'il est activé, les résultats des requêtes `SELECT` sont stockés dans le [cache de requêtes](/fr/concepts/features/performance/caches/query-cache).

Valeurs possibles :

* 0 - Désactivé
* 1 - Activé
