这些设置可在 system.settings 中查看,并由 源代码 自动生成。
use_top_k_dynamic_filtering
类型
Bool
默认值
1
版本历史
| 版本 | 默认值 | 注释 |
|---|---|---|
| 26.5 | 1 | 默认启用 TopK 查询的动态过滤优化 |
| 25.12 | 0 | 新设置。 |
在执行 ORDER BY <column> LIMIT n 查询时启用动态过滤优化。
启用后,查询执行器会尝试跳过那些不会进入结果集最终 top N 行的粒度和行。这项优化具有动态特性,延迟改善效果取决于数据分布以及查询中是否存在其他谓词。
可能的值:
- 0 — 已禁用。
- 1 — 已启用。
use_top_k_dynamic_filtering_for_variable_length_types
类型
Bool
默认值
0
版本历史
| 版本 | 默认值 | 注释 |
|---|---|---|
| 26.5 | 0 | 默认对变长排序列(例如 `String`)禁用 `use_top_k_dynamic_filtering`;此前该优化会无条件应用,此行为在 `compatibility` 下保留。 |
允许在排序列为变长数据类型 (例如 String、Array、Map、包含变长元素的 Tuple) 时应用 use_top_k_dynamic_filtering。
对于这类类型,当列的字典序最小值占主导 (例如大多为空字符串) 且只能跳过很少的粒度时,动态过滤执行逐行阈值比较的开销可能会超过其带来的收益。在这种情况下,动态过滤会增加查询延迟,而非带来改进。
当此设置为 0 时,动态过滤仅适用于值在内存中具有固定最大大小的列 (数值、Date、DateTime、FixedString、Enum、这些类型的 Nullable 以及这些类型的 Tuple) 。设置为 1 时,动态过滤也会应用于变长类型。
可选值:
- 0 — 禁用。
- 1 — 启用。