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

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

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

export const ExperimentalBadge = () => {
  return <div 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. <u><a href="/docs/docs/beta-and-experimental-features#experimental-features">En savoir plus.</a></u>
        </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="query_plan_aggregation_in_order">
  ## query\_plan\_aggregation\_in\_order
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "22.12"},{"label": "1"},{"label": "Active certaines refactorisations autour du plan de requête"}]}]} />

Active ou désactive l’optimisation d’agrégation dans l’ordre au niveau du plan de requête.
Ne prend effet que si le paramètre [`query_plan_enable_optimizations`](/docs/fr/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) vaut 1.

<Note>
  Il s’agit d’un paramètre réservé aux experts, qui ne doit être utilisé par les développeurs que pour le débogage. Ce paramètre pourra à l’avenir changer de manière non rétrocompatible ou être supprimé.
</Note>

Valeurs possibles :

* 0 - Désactiver
* 1 - Activer

<div id="query_plan_convert_any_join_to_semi_or_anti_join">
  ## query\_plan\_convert\_any\_join\_to\_semi\_or\_anti\_join
</div>

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

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

Permet de convertir ANY JOIN en SEMI ou ANTI JOIN si le filtre après JOIN renvoie toujours false pour les lignes correspondantes ou non correspondantes

<div id="query_plan_convert_join_to_in">
  ## query\_plan\_convert\_join\_to\_in
</div>

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

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

Permet de convertir un `JOIN` en sous-requête avec `IN` si les colonnes de sortie sont liées uniquement à la table de gauche. Peut produire des résultats incorrects avec des `JOIN` autres que `ANY JOIN` (par ex. `ALL JOIN`, qui est la valeur par défaut).

<div id="query_plan_convert_outer_join_to_inner_join">
  ## query\_plan\_convert\_outer\_join\_to\_inner\_join
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.4"},{"label": "1"},{"label": "Permet de convertir OUTER JOIN en INNER JOIN si le filtre appliqué après JOIN exclut toujours les valeurs par défaut"}]}]} />

Permet de convertir `OUTER JOIN` en `INNER JOIN` si le filtre appliqué après `JOIN` exclut toujours les valeurs par défaut

<div id="query_plan_direct_read_from_text_index">
  ## query\_plan\_direct\_read\_from\_text\_index
</div>

<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.9"},{"label": "1"},{"label": "Nouveau paramètre."}]}]} />

Permet d’effectuer le filtrage de recherche en texte intégral en s’appuyant uniquement sur l’index de texte inversé dans le plan de requête.

<div id="query_plan_display_internal_aliases">
  ## query\_plan\_display\_internal\_aliases
</div>

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

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

Afficher les alias internes (tels que \_\_table1) dans EXPLAIN PLAN au lieu de ceux spécifiés dans la requête d’origine.

<div id="query_plan_enable_multithreading_after_window_functions">
  ## query\_plan\_enable\_multithreading\_after\_window\_functions
</div>

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

Activer le multithreading après l’évaluation des fonctions de fenêtre afin de permettre le traitement parallèle des flux

<div id="query_plan_enable_optimizations">
  ## query\_plan\_enable\_optimizations
</div>

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

Active ou désactive l’optimisation des requêtes au niveau du plan de requête.

<Note>
  Il s’agit d’un paramètre réservé aux experts, qui ne doit être utilisé par les développeurs qu’à des fins de débogage. Ce paramètre pourra évoluer à l’avenir de manière non rétrocompatible, voire être supprimé.
</Note>

Valeurs possibles :

* 0 - Désactiver toutes les optimisations au niveau du plan de requête
* 1 - Activer les optimisations au niveau du plan de requête (mais certaines optimisations peuvent toujours être désactivées via leurs paramètres individuels)

<div id="query_plan_execute_functions_after_sorting">
  ## query\_plan\_execute\_functions\_after\_sorting
</div>

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

Active ou désactive une optimisation au niveau du plan de requête qui déplace les expressions après les étapes de tri.
N’a d’effet que si le paramètre [`query_plan_enable_optimizations`](/docs/fr/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) est défini sur 1.

<Note>
  Il s’agit d’un paramètre réservé aux experts, qui ne devrait être utilisé par les développeurs qu’à des fins de débogage. Ce paramètre peut, à l’avenir, changer de manière non rétrocompatible ou être supprimé.
</Note>

Valeurs possibles :

* 0 - Désactiver
* 1 - Activer

<div id="query_plan_filter_push_down">
  ## query\_plan\_filter\_push\_down
</div>

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

Active ou désactive une optimisation au niveau du plan de requête qui fait descendre les filtres dans le plan d’exécution.
N’a d’effet que si le paramètre [query\_plan\_enable\_optimizations](/docs/fr/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) est défini sur 1.

<Note>
  Il s’agit d’un paramètre réservé aux experts, à utiliser uniquement par les développeurs pour le débogage. Ce paramètre pourra évoluer à l’avenir de manière non rétrocompatible, ou être supprimé.
</Note>

Valeurs possibles :

* 0 - Désactiver
* 1 - Activer

<div id="query_plan_join_shard_by_pk_ranges">
  ## query\_plan\_join\_shard\_by\_pk\_ranges
</div>

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

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

Applique le sharding pour JOIN si les clés de jointure contiennent un préfixe de PRIMARY KEY dans les deux tables. Pris en charge par les algorithmes hash, parallel\_hash et full\_sorting\_merge. En général, cela n'accélère pas les requêtes, mais peut réduire la consommation de mémoire.

<div id="query_plan_join_swap_table">
  ## query\_plan\_join\_swap\_table
</div>

<SettingsInfoBlock type="BoolAuto" default_value="auto" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.12"},{"label": "auto"},{"label": "Nouveau paramètre. La table de droite était toujours choisie auparavant."}]}]} />

Détermine de quel côté de la jointure doit se trouver la table de build (également appelée table interne, c'est celle qui est insérée dans la table de hachage lors d'un hash join) dans le plan de requête. Ce paramètre est pris en charge uniquement avec la strictness de jointure `ALL` et la clause `JOIN ON`. Valeurs possibles :

* 'auto' : laisser le planificateur décider quelle table utiliser comme table de build.
* 'false' : ne jamais permuter les tables (la table de droite est la table de build).
* 'true' : toujours permuter les tables (la table de gauche est la table de build).

<div id="query_plan_lift_up_array_join">
  ## query\_plan\_lift\_up\_array\_join
</div>

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

Active ou désactive une optimisation au niveau du plan de requête qui remonte les ARRAY JOIN dans le plan d'exécution.
Ce paramètre n'a d'effet que si [query\_plan\_enable\_optimizations](/docs/fr/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) vaut 1.

<Note>
  Il s'agit d'un paramètre réservé aux experts, qui ne doit être utilisé par les développeurs que pour le débogage. Ce paramètre pourra être modifié ultérieurement de manière non rétrocompatible, voire supprimé.
</Note>

Valeurs possibles :

* 0 - Désactiver
* 1 - Activer

<div id="query_plan_lift_up_union">
  ## query\_plan\_lift\_up\_union
</div>

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

Active ou désactive une optimisation au niveau du plan de requête, qui fait remonter des sous-arbres plus importants du plan de requête dans l’union afin de permettre d’autres optimisations.
Ne prend effet que si le paramètre [`query_plan_enable_optimizations`](/docs/fr/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) vaut 1.

<Note>
  Il s’agit d’un paramètre réservé aux experts qui ne doit être utilisé par les développeurs que pour le débogage. Ce paramètre peut évoluer à l’avenir de manière non rétrocompatible, ou être supprimé.
</Note>

Valeurs possibles :

* 0 - Désactiver
* 1 - Activer

<div id="query_plan_max_limit_for_join_lazy_indexing">
  ## query\_plan\_max\_limit\_for\_join\_lazy\_indexing
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "1000"},{"label": "Nouveau paramètre ajouté pour contrôler la limite maximale autorisant l’utilisation du plan de requête pour l’optimisation d’indexation paresseuse des JOIN. Si la valeur est zéro, il n’y a pas de limite"}]}]} />

Contrôle la limite maximale autorisant l’utilisation du plan de requête pour l’optimisation d’indexation paresseuse dans JOIN. Si la valeur est zéro, il n’y a pas de limite.

<div id="query_plan_max_limit_for_lazy_materialization">
  ## query\_plan\_max\_limit\_for\_lazy\_materialization
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "10"},{"label": "Ajout d'un nouveau paramètre pour contrôler la valeur maximale de LIMIT autorisant l'utilisation du plan de requête pour l'optimisation de la matérialisation différée. Si cette valeur est égale à zéro, il n'y a pas de limite"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "10000"},{"label": "Augmentation de la limite après amélioration des performances"}]}, {"id": "row-3","items": [{"label": "25.11"},{"label": "100"},{"label": "Plus optimisé"}]}]} />

Contrôle la valeur maximale de LIMIT autorisant l'utilisation du plan de requête pour l'optimisation de la matérialisation différée. Si cette valeur est égale à zéro, il n'y a pas de limite.

<div id="query_plan_max_limit_for_top_k_optimization">
  ## query\_plan\_max\_limit\_for\_top\_k\_optimization
</div>

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

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

Définit la valeur maximale de la limite autorisant l’évaluation du plan de requête pour l’optimisation TopK à l’aide de l’index de saut minmax et du filtrage dynamique par seuil. Si elle vaut zéro, aucune limite n’est appliquée.

<div id="query_plan_max_optimizations_to_apply">
  ## query\_plan\_max\_optimizations\_to\_apply
</div>

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

Limite le nombre total d'optimisations appliquées au plan de requête ; voir le paramètre [query\_plan\_enable\_optimizations](/docs/fr/reference/settings/session-settings/query-plan#query_plan_enable_optimizations).
Permet d'éviter des temps d'optimisation trop longs pour les requêtes complexes.
Dans une requête EXPLAIN PLAN, cesse d'appliquer les optimisations une fois cette limite atteinte et renvoie le plan tel quel.
Lors de l'exécution normale des requêtes, si le nombre réel d'optimisations dépasse ce paramètre, une exception est levée.

<Note>
  Il s'agit d'un paramètre réservé aux experts, qui ne doit être utilisé par les développeurs qu'à des fins de débogage. Ce paramètre peut évoluer à l'avenir de manière non rétrocompatible, voire être supprimé.
</Note>

<div id="query_plan_max_set_size_for_projection_match">
  ## query\_plan\_max\_set\_size\_for\_projection\_match
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "10000"},{"label": "Ajout d’un nouveau paramètre qui limite le coût des ensembles de clauses IN hachés par contenu dans le mécanisme de correspondance des projections (actuellement : projection d’agrégation). Les ensembles qui dépassent cette limite sont considérés comme non correspondants. La valeur zéro désactive entièrement la comparaison par hachage de contenu (valeur de compatibilité : la correspondance de projection ne réussit jamais pour les nœuds contenant des ensembles IN)."}]}]} />

Nombre maximal de lignes dans un ensemble de clause `IN` pour lequel le mécanisme de correspondance des projections calcule et compare des hachages de contenu afin de déterminer si deux ensembles sont égaux. Les ensembles plus grands que cette valeur sont considérés comme non correspondants et la projection est ignorée. La valeur zéro désactive entièrement la comparaison par hachage de contenu : une correspondance de projection ne réussit jamais pour les nœuds contenant des ensembles de clause `IN`.

Utilisé par le mécanisme de correspondance des projections d’agrégation (et par tout futur mécanisme de correspondance des projections devant comparer des ensembles de clause `IN`). Le calcul du hachage de contenu est en `O(N log N)` par rapport au nombre d’éléments de l’ensemble ; ce paramètre limite le coût de la planification lorsque de nombreuses clauses `IN` apparaissent dans la requête ou la projection.

<div id="query_plan_max_step_description_length">
  ## query\_plan\_max\_step\_description\_length
</div>

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

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

Longueur maximale de la description d’étape dans EXPLAIN PLAN.

<div id="query_plan_merge_expression_into_join">
  ## query\_plan\_merge\_expression\_into\_join
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.7"},{"label": "1"},{"label": "Nouveau paramètre. Permet de fusionner l’étape Expression avec l’étape JOIN lors de l’optimisation du réordonnancement des jointures."}]}]} />

Permet de fusionner des expressions avec l’étape JOIN lors de l’optimisation du réordonnancement des jointures.

<div id="query_plan_merge_expressions">
  ## query\_plan\_merge\_expressions
</div>

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

Active une optimisation au niveau du plan de requête qui fusionne les filtres successifs.
N’a d’effet que si le paramètre [query\_plan\_enable\_optimizations](/docs/fr/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) vaut 1.

<Note>
  Il s’agit d’un paramètre réservé aux experts, qui ne devrait être utilisé par les développeurs qu’à des fins de débogage. Ce paramètre pourra à l’avenir évoluer de manière non rétrocompatible ou être supprimé.
</Note>

Valeurs possibles :

* 0 - Désactiver
* 1 - Activer

<div id="query_plan_merge_filter_into_join_condition">
  ## query\_plan\_merge\_filter\_into\_join\_condition
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "1"},{"label": "Ajout d’un nouveau paramètre permettant d’intégrer le filtre à la condition de jointure"}]}]} />

Permet d’intégrer le filtre à la condition `JOIN` et de convertir `CROSS JOIN` en `INNER`.

<div id="query_plan_merge_filters">
  ## query\_plan\_merge\_filters
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "0"},{"label": "Permet de fusionner les filtres dans le plan de requête"}]}, {"id": "row-2","items": [{"label": "24.11"},{"label": "1"},{"label": "Permet de fusionner les filtres dans le plan de requête. Ceci est nécessaire pour prendre correctement en charge le push-down des filtres avec l’analyseur."}]}]} />

Permet de fusionner les filtres dans le plan de requête.

<div id="query_plan_min_columns_for_join_lazy_indexing">
  ## query\_plan\_min\_columns\_for\_join\_lazy\_indexing
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "3"},{"label": "Contrôle le nombre minimal de colonnes de charge utile du côté gauche nécessaire pour activer l’optimisation d’indexation paresseuse dans JOIN"}]}]} />

Contrôle le nombre minimal de colonnes de charge utile du côté gauche nécessaire pour activer l’optimisation d’indexation paresseuse dans JOIN. 0 signifie que l’optimisation est désactivée.

<div id="query_plan_optimize_join_order_algorithm">
  ## query\_plan\_optimize\_join\_order\_algorithm
</div>

<ExperimentalBadge />

<SettingsInfoBlock type="JoinOrderAlgorithm" default_value="greedy" />

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

Spécifie quels algorithmes d’ordre des jointures essayer lors de l’optimisation du plan de requête. Les algorithmes suivants sont disponibles :

* 'greedy' - algorithme glouton de base - est rapide, mais peut ne pas produire le meilleur ordre de jointure
* 'dpsize' - implémente l’algorithme DPsize, actuellement uniquement pour les jointures internes - prend en compte tous les ordres de jointure possibles et trouve le plus optimal, mais peut être lent pour les requêtes comportant de nombreuses tables et de nombreux prédicats de jointure.
* 'dpsub' - implémente l’algorithme DPsub, qui prend en charge à la fois les jointures internes et les jointures autres qu’internes - prend en compte tous les ordres de jointure possibles et trouve le plus optimal, mais peut être lent pour les requêtes comportant de nombreuses tables et de nombreux prédicats de jointure.
* 'dphyp' - implémente l’algorithme DPhyp (Dynamic Programming via Hypergraph Partitioning), actuellement uniquement pour les jointures internes - explore le même espace de recherche que `dpsize`, mais n’énumère que les paires de sous-graphes connectés, ce qui génère moins de jointures intermédiaires sur des graphes de jointure clairsemés, au prix de ne pas prendre en compte les produits cartésiens
  Plusieurs algorithmes peuvent être spécifiés sous forme de liste séparée par des virgules, par exemple `dphyp,greedy`. Ils sont essayés dans l’ordre ; si un algorithme ne peut pas traiter la requête (par exemple, en raison de jointures externes ou de composantes non connexes), le suivant est utilisé comme solution de repli.

<div id="query_plan_optimize_join_order_limit">
  ## query\_plan\_optimize\_join\_order\_limit
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "1"},{"label": "Nouveau paramètre"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "10"},{"label": "Autoriser par défaut le réordonnancement des JOIN avec un plus grand nombre de tables"}]}]} />

Optimise l'ordre des jointures au sein d'une même sous-requête. Cette fonctionnalité n'est actuellement prise en charge que dans des cas très limités.
La valeur correspond au nombre maximal de tables à optimiser.

<div id="query_plan_optimize_join_order_max_searched_plans">
  ## query\_plan\_optimize\_join\_order\_max\_searched\_plans
</div>

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "100000"},{"label": "Nouveau paramètre permettant de limiter le nombre de plans partiels que l'optimiseur de l'ordre des jointures énumère avant de basculer vers l'algorithme suivant."}]}]} />

Nombre maximal de plans partiels que l'optimiseur de l'ordre des jointures peut énumérer avant d'abandonner et de basculer vers l'algorithme suivant dans `query_plan_optimize_join_order_algorithm`.
Cette limite borne de manière déterministe le temps d'optimisation (indépendamment du temps écoulé) sur des graphes de jointures denses, tels que des cliques ou des étoiles, où l'espace de recherche croît exponentiellement.
Définissez cette valeur sur 0 pour désactiver la limite. Cela n'a aucun effet sur la valeur par défaut `query_plan_optimize_join_order_limit`, pour laquelle la recherche reste toujours bien en deçà de cette limite.

<div id="query_plan_optimize_join_order_randomize">
  ## query\_plan\_optimize\_join\_order\_randomize
</div>

<ExperimentalBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "Nouveau paramètre permettant d’aléatoiriser les statistiques d’ordre des jointures à des fins de test."}]}]} />

Lorsqu’il est différent de zéro, l’optimiseur de l’ordre des jointures utilise des cardinalités et des NDV générées aléatoirement au lieu de statistiques réelles.
Lorsqu’il est défini sur 1, une graine aléatoire est générée ; lorsqu’il est défini sur une valeur > 1, cette valeur est utilisée directement comme graine.
Ce paramètre est destiné aux tests afin de détecter les erreurs causées par différents ordres de jointure.

<div id="query_plan_optimize_lazy_final">
  ## query\_plan\_optimize\_lazy\_final
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "0"},{"label": "Nouveau paramètre pour optimiser la lecture avec FINAL à partir de ReplacingMergeTree à l’aide d’une analyse d’index basée sur un ensemble"}]}]} />

Optimise la lecture avec FINAL à partir de ReplacingMergeTree en construisant un ensemble de clés primaires, puis en l’utilisant pour l’analyse d’index.

<div id="query_plan_optimize_lazy_materialization">
  ## query\_plan\_optimize\_lazy\_materialization
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "1"},{"label": "Ajout d’un nouveau paramètre pour utiliser le plan de requête pour l’optimisation par matérialisation différée"}]}]} />

Utiliser le plan de requête pour l’optimisation par matérialisation différée.

<div id="query_plan_optimize_prewhere">
  ## query\_plan\_optimize\_prewhere
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.2"},{"label": "1"},{"label": "Permet de pousser le filtre dans l'expression PREWHERE pour les moteurs de stockage pris en charge"}]}]} />

Permet de pousser le filtre dans l'expression PREWHERE pour les moteurs de stockage pris en charge

<div id="query_plan_push_down_limit">
  ## query\_plan\_push\_down\_limit
</div>

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

Active une optimisation au niveau du plan de requête qui pousse les `LIMIT` vers le bas dans le plan d'exécution.
N'a d'effet que si le paramètre [query\_plan\_enable\_optimizations](/docs/fr/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) est défini sur 1.

<Note>
  Il s'agit d'un paramètre réservé aux experts, qui ne doit être utilisé par les développeurs qu'à des fins de débogage. Ce paramètre peut à l'avenir évoluer de manière non rétrocompatible, voire être supprimé.
</Note>

Valeurs possibles :

* 0 - Désactiver
* 1 - Activer

<div id="query_plan_push_limit_by_into_sort">
  ## query\_plan\_push\_limit\_by\_into\_sort
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "1"},{"label": "Nouveau paramètre qui intègre un LIMIT BY par flux au pipeline de tri lorsque les colonnes de LIMIT BY sont un préfixe de ORDER BY, ce qui réduit le nombre de lignes transmises à la fusion finale."}]}]} />

Active ou désactive une optimisation au niveau du plan de requête pour les requêtes `ORDER BY ... LIMIT BY`. Lorsque les colonnes de `LIMIT BY` sont un préfixe de la clause `ORDER BY`, chaque flux trié en parallèle applique `LIMIT BY` avant que les flux ne soient fusionnés en un seul, ce qui réduit le nombre de lignes traitées par la fusion finale et les étapes suivantes du pipeline. Accélère les requêtes dans lesquelles `LIMIT BY` écarte une grande partie des lignes.

Ne prend effet que si le paramètre [query\_plan\_enable\_optimizations](/docs/fr/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) vaut 1.

Valeurs possibles :

* 0 - Désactiver
* 1 - Activer

<div id="query_plan_read_in_order">
  ## query\_plan\_read\_in\_order
</div>

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

Active ou désactive l’optimisation de lecture ordonnée au niveau du plan de requête.
Ne prend effet que si le paramètre [`query_plan_enable_optimizations`](/docs/fr/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) est défini sur 1.

<Note>
  Il s’agit d’un paramètre réservé aux experts, qui ne doit être utilisé par les développeurs que pour le débogage. Ce paramètre peut évoluer ultérieurement de manière non rétrocompatible ou être supprimé.
</Note>

Valeurs possibles :

* 0 - Désactiver
* 1 - Activer

<div id="query_plan_read_in_order_through_join">
  ## query\_plan\_read\_in\_order\_through\_join
</div>

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

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

Conserve la lecture dans l’ordre depuis la table de gauche lors des opérations JOIN, afin qu’elle puisse être utilisée par les étapes suivantes.

<div id="query_plan_remove_redundant_distinct">
  ## query\_plan\_remove\_redundant\_distinct
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.2"},{"label": "1"},{"label": "Suppression de l’étape DISTINCT redondante dans le plan de requête"}]}]} />

Active ou désactive une optimisation du plan de requête qui supprime les étapes DISTINCT redondantes.
N’a d’effet que si le paramètre [`query_plan_enable_optimizations`](/docs/fr/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) vaut 1.

<Note>
  Il s’agit d’un paramètre réservé aux experts, qui ne doit être utilisé par les développeurs qu’à des fins de débogage. Ce paramètre pourra à l’avenir évoluer de façon non rétrocompatible ou être supprimé.
</Note>

Valeurs possibles :

* 0 - Désactiver
* 1 - Activer

<div id="query_plan_remove_redundant_sorting">
  ## query\_plan\_remove\_redundant\_sorting
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "23.1"},{"label": "1"},{"label": "Supprime les opérations de tri redondantes dans le plan de requête. Par exemple, les étapes de tri liées aux clauses ORDER BY dans les sous-requêtes"}]}]} />

Active ou désactive une optimisation au niveau du plan de requête qui supprime les étapes de tri redondantes, par exemple dans les sous-requêtes.
Ne prend effet que si le paramètre [`query_plan_enable_optimizations`](/docs/fr/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) est défini sur 1.

<Note>
  Il s'agit d'un paramètre réservé aux experts qui ne doit être utilisé par les développeurs qu'à des fins de débogage. Ce paramètre peut évoluer ultérieurement de manière non rétrocompatible, voire être supprimé.
</Note>

Valeurs possibles :

* 0 - Désactiver
* 1 - Activer

<div id="query_plan_remove_unused_columns">
  ## query\_plan\_remove\_unused\_columns
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.12"},{"label": "1"},{"label": "Nouveau paramètre. Ajoute une optimisation pour supprimer les colonnes inutilisées dans le plan de requête de la requête."}]}]} />

Active ou désactive une optimisation au niveau du plan de requête de la requête, qui tente de supprimer les colonnes inutilisées (à l’entrée comme à la sortie) des étapes du plan.
N’a d’effet que si le paramètre [query\_plan\_enable\_optimizations](/docs/fr/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) vaut 1.

<Note>
  Il s’agit d’un paramètre réservé aux experts, qui ne doit être utilisé par les développeurs qu’à des fins de débogage. Ce paramètre pourra, à l’avenir, être modifié de manière non rétrocompatible ou supprimé.
</Note>

Valeurs possibles :

* 0 - Désactiver
* 1 - Activer

<div id="query_plan_reuse_storage_ordering_for_window_functions">
  ## query\_plan\_reuse\_storage\_ordering\_for\_window\_functions
</div>

**Aliases** : `optimize_read_in_window_order`

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.1"},{"label": "0"},{"label": "Désactive cette logique par défaut."}]}]} />

Active ou désactive une optimisation au niveau du plan de requête qui exploite l'ordre de tri du stockage lors du tri pour les fonctions de fenêtre.
Ne prend effet que si le paramètre [`query_plan_enable_optimizations`](/docs/fr/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) vaut 1.

<Note>
  Il s'agit d'un paramètre réservé aux experts qui ne doit être utilisé par les développeurs qu'à des fins de débogage. Ce paramètre peut évoluer ultérieurement de façon non rétrocompatible, voire être supprimé.
</Note>

Valeurs possibles :

* 0 - Désactiver
* 1 - Activer

<div id="query_plan_split_filter">
  ## query\_plan\_split\_filter
</div>

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

<Note>
  Il s’agit d’un paramètre réservé aux experts qui ne doit être utilisé par les développeurs que pour le débogage. Ce paramètre peut à l’avenir changer de manière non rétrocompatible ou être supprimé.
</Note>

Active ou désactive une optimisation au niveau du plan de requête qui décompose les filtres en expressions.
N’a d’effet que si le paramètre [query\_plan\_enable\_optimizations](/docs/fr/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) vaut 1.

Valeurs possibles :

* 0 - Désactiver
* 1 - Activer

<div id="query_plan_text_index_add_hint">
  ## query\_plan\_text\_index\_add\_hint
</div>

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

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

Permet d'ajouter un hint (prédicat supplémentaire) pour le filtrage généré à partir de l'index de texte inversé dans le plan de requête.

<div id="query_plan_top_k_through_join">
  ## query\_plan\_top\_k\_through\_join
</div>

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.5"},{"label": "1"},{"label": "Nouveau paramètre permettant d’activer une optimisation au niveau du plan de requête, qui propage ORDER BY ... LIMIT n à travers une jointure LEFT\/RIGHT lorsque la clé de tri ne référence que le côté préservé."}]}]} />

Active ou désactive une optimisation au niveau du plan de requête qui propage `ORDER BY ... LIMIT n` à travers une jointure lorsque la clé de tri ne référence que des colonnes du côté préservé par la jointure (LEFT/RIGHT). Elle limite le nombre de lignes que l’entrée du côté préservé doit produire avant la jointure.
Ne prend effet que si le paramètre [query\_plan\_enable\_optimizations](/docs/fr/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) vaut 1.

Valeurs possibles :

* 0 - Désactiver
* 1 - Activer

<div id="query_plan_try_use_vector_search">
  ## query\_plan\_try\_use\_vector\_search
</div>

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

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

Active ou désactive une optimisation au niveau du plan de requête visant à utiliser l'index de similarité vectorielle.
Ne prend effet que si le paramètre [`query_plan_enable_optimizations`](/docs/fr/reference/settings/session-settings/query-plan#query_plan_enable_optimizations) vaut 1.

<Note>
  Il s'agit d'un paramètre réservé aux experts, qui ne doit être utilisé par les développeurs que pour le débogage. Ce paramètre peut être modifié ultérieurement de manière non rétrocompatible, voire supprimé.
</Note>

Valeurs possibles :

* 0 - Désactiver
* 1 - Activer
