Skip to main content
这些设置可在 system.settings 中查看,且由 源文件 自动生成。

optimize_trivial_approximate_count_query

对于支持此类估算的存储 (例如 EmbeddedRocksDB) ,在简单 count 优化中使用近似值。 可能的值:
  • 0 — 禁用优化。
    • 1 — 启用优化。

optimize_trivial_count_query

启用或禁用对简单查询 SELECT count() FROM table 的优化,该优化会使用 MergeTree 的元数据。如果需要使用行级安全,请禁用此设置。 可能的值:
  • 0 — 禁用优化。
    • 1 — 启用优化。
另请参阅:

optimize_trivial_count_with_sparsity_filter

optimize_trivial_count_query 优化扩展到 形如 SELECT count() FROM t WHERE col <op> const 的 查询,其中 <op> const 必须能够将行精确划分为 col 的默认值和非默认值。这样,计数结果即可 直接根据 MergeTree 已记录在 serialization.json 中的每列 num_defaults / num_rows 计数器返回,无需扫描数据。 可识别的模式:
  • col = default(col) / col != default(col),适用于 Int* / UInt*String / FixedStringDate / DateTime / DateTime64Decimal*UUIDIPv4 / IPv6
  • Nullable 列上的 IS NULL / IS NOT NULL
  • String 列上的 empty(col) / notEmpty(col)
  • Bool 列上的 col = true / col != true
  • 无符号整数列上的 col > 0col >= 1col < 1col <= 0
  • Int*UInt*Bool 列上直接使用 col / NOT col (真值判断) 。
相等模式不适用于 Float*Enum*NullableLowCardinality, 或复合类型 (TupleArrayMap、…) —— 对于这些类型,计数仍会走 常规扫描路径。 要使其生效,每个 part 的 num_defaults 计数器必须是精确的。请在插入和合并之前, 先在目标表上启用 MergeTree 表设置 compute_exact_num_defaults_for_sparse_columns。未启用该设置时写入的 parts 会被静默排除在此重写之外,因此仅启用 optimize_trivial_count_with_sparsity_filter 还不够。 对于 Nullable 列上的 IS NULL / IS NOT NULL 模式,该列还必须 在 serialization.json 中具有 num_defaults 条目,而这只会在插入 / 合并时将 MergeTree 表设置 nullable_serialization_version 设为 allow_sparse 时发生。使用默认值 basic 时,Nullable 列不会有每列条目,因此 该优化会静默失效。 可选值:
  • 0 — 优化已禁用。
    • 1 — 优化已启用。
另请参见:

optimize_trivial_group_by_limit_query

通过设置 max_rows_to_group_by = n + offsetgroup_by_overflow_mode = 'any',启用或禁用对简单查询 SELECT key_expr FROM table GROUP BY key_expr LIMIT n 的优化 (要求投影中没有聚合函数,且不存在 HAVING/ORDER BY/LIMIT BY/窗口子句,也没有 GROUP BY 修饰符) 。当产生 n + offset 个不同键后,聚合会停止。 当用户显式将 group_by_overflow_mode 设置为非 any 值时 (以保留其显式指定的 throw/break 行为) ,以及当用户已设置了更严格的 max_rows_to_group_by 时 (此时该优化会成为空操作) ,将不会应用此优化。 可选值:
  • 0 — 禁用该优化。
  • 1 — 启用该优化。

optimize_trivial_insert_select

对简单的 ‘INSERT INTO table SELECT … FROM TABLES’ 查询进行优化
最后修改于 2026年7月24日