optimize_trivial_approximate_count_query
- 0 — Optimisation désactivée.
- 1 — Optimisation activée.
optimize_trivial_count_query
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.
optimize_trivial_count_with_sparsity_filter
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)pourInt*/UInt*,String/FixedString,Date/DateTime/DateTime64,Decimal*,UUID,IPv4/IPv6.IS NULL/IS NOT NULLsur les colonnesNullable.empty(col)/notEmpty(col)sur les colonnesString.col = true/col != truesur les colonnesBool.col > 0,col >= 1,col < 1,col <= 0sur les colonnes d’entiers non signés.col/NOT colseuls sur les colonnesInt*,UInt*,Bool(test de vérité).
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.
optimize_trivial_group_by_limit_query
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.