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

optimize_limit_by_function_keys

消除 LIMIT BY 部分中可由其他键推导出的函数键。 示例:LIMIT 5 BY x, f(x) 会变为 LIMIT 5 BY x

optimize_limit_by_in_order

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