Skip to main content
Ces paramètres sont disponibles dans system.settings et sont générés automatiquement à partir du code source.

optimize_trivial_approximate_count_query

Utilise une valeur approximative pour optimiser les requêtes de comptage triviales sur les stockages qui prennent en charge ce type d’estimation, par exemple EmbeddedRocksDB. Valeurs possibles :
  • 0 — Optimisation désactivée.
    • 1 — Optimisation activée.

optimize_trivial_count_query

Active ou désactive l’optimisation de la requête triviale SELECT count() FROM table à l’aide des métadonnées de MergeTree. Si vous devez utiliser la sécurité au niveau des lignes, désactivez ce paramètre. Valeurs possibles :
  • 0 — Optimisation désactivée.
    • 1 — Optimisation activée.
Voir aussi :

optimize_trivial_count_with_sparsity_filter

Étend l’optimisation optimize_trivial_count_query aux requêtes de la forme SELECT count() FROM t WHERE col <op> const, où <op> const répartit exactement les lignes entre les valeurs par défaut et les valeurs non par défaut de col. Le décompte est alors obtenu à partir des compteurs num_defaults / num_rows par colonne que MergeTree conserve déjà dans serialization.json, sans parcours des données. Motifs reconnus :
  • col = default(col) / col != default(col) pour Int* / UInt*, String / FixedString, Date / DateTime / DateTime64, Decimal*, UUID, IPv4 / IPv6.
  • IS NULL / IS NOT NULL sur les colonnes Nullable.
  • empty(col) / notEmpty(col) sur les colonnes String.
  • col = true / col != true sur les colonnes Bool.
  • col > 0, col >= 1, col < 1, col <= 0 sur les colonnes d’entiers non signés.
  • col / NOT col seuls sur les colonnes Int*, UInt*, Bool (test de vérité).
Les motifs d’égalité ne s’appliquent pas à Float*, Enum*, Nullable, LowCardinality, ni aux types composés (Tuple, Array, Map, …) — pour ceux-ci, le décompte suit le chemin de parcours normal. Pour prendre effet, le compteur num_defaults par part doit être exact. Activez le paramètre de table MergeTree compute_exact_num_defaults_for_sparse_columns sur la table cible avant les insertions et les fusions. Les parts écrites sans ce paramètre sont silencieusement exclues de la réécriture, donc activer uniquement optimize_trivial_count_with_sparsity_filter ne suffit pas. Pour les motifs IS NULL / IS NOT NULL sur les colonnes Nullable, la colonne doit aussi avoir une entrée num_defaults dans serialization.json, ce qui n’arrive que lorsque le paramètre de table MergeTree nullable_serialization_version est défini sur allow_sparse au moment de l’insert / merge. Avec la valeur par défaut basic, les colonnes Nullable n’obtiennent aucune entrée par colonne, donc l’optimisation ne s’applique tout simplement pas. Valeurs possibles :
  • 0 — Optimisation désactivée.
    • 1 — Optimisation activée.
Voir aussi :

optimize_trivial_group_by_limit_query

Active ou désactive l’optimisation de la requête triviale SELECT key_expr FROM table GROUP BY key_expr LIMIT n (sans fonctions d’agrégation dans la projection, sans clauses HAVING/ORDER BY/LIMIT BY/de fenêtre, et sans modificateurs GROUP BY) en définissant max_rows_to_group_by = n + offset avec group_by_overflow_mode = 'any'. L’agrégation s’arrête dès que n + offset clés distinctes ont été produites. L’optimisation est désactivée lorsque l’utilisateur a explicitement défini group_by_overflow_mode sur une valeur autre que any (afin de préserver son comportement explicite throw/break), ainsi que lorsque l’utilisateur a déjà défini une valeur max_rows_to_group_by plus restrictive (l’optimisation serait alors sans effet). Valeurs possibles :
  • 0 — Optimisation désactivée.
  • 1 — Optimisation activée.

optimize_trivial_insert_select

Optimiser la requête triviale ‘INSERT INTO table SELECT … FROM TABLES’
Dernière modification le 24 juillet 2026