Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

optimize_limit_* 会话设置

这些设置可在 system.settings 中查看,并由 源代码 自动生成。

optimize_limit_by_function_keys

类型
Bool
默认值
1
版本历史
版本默认值注释
26.61新增设置:消除 LIMIT BY 键中可由其他 LIMIT BY 键推导出的函数键。

消除 LIMIT BY 部分中可由其他键推导出的函数键。

示例:LIMIT 5 BY x, f(x) 会变为 LIMIT 5 BY x

optimize_limit_by_in_order

类型
Bool
默认值
1
版本历史
版本默认值注释
26.61新增设置:当 `BY` 列是表排序键的前缀时,优化 `LIMIT BY` 查询。

<cols> (顺序不限) 构成表排序键的前缀时,或者在 WHERE col = const 固定前导列后能够构成此前缀时,可优化 SELECT ... LIMIT N BY <cols> 查询。启用后,源端会按主键顺序读取数据,因此在每个流内,BY 列值相同的行会相邻到达。当数据以单个已排序流到达时,LIMIT BY 会以流式模式进行过滤,只需 O(1) 内存,而无需为已见到的每种不同 BY 列组合构建哈希表。当已排序数据通过多个流到达,且相同的 BY 值可能出现在多个流中时,系统会先以流式模式对每个流进行预过滤,将每个分组最多保留 LIMIT + OFFSET 行;然后再合并这些流,并通过最终基于哈希的 LIMIT BY 对跨多个流的分组进行去重。最后这一轮仍会为 BY 列的每种不同组合保留一个条目,但只处理预过滤后的行。

Navigation