Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

use_top_k_dynamic_filtering_* 会话设置

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

use_top_k_dynamic_filtering

类型
Bool
默认值
1
版本历史
版本默认值注释
26.51默认启用 TopK 查询的动态过滤优化
25.120新设置。

在执行 ORDER BY <column> LIMIT n 查询时启用动态过滤优化。

启用后,查询执行器会尝试跳过那些不会进入结果集最终 top N 行的粒度和行。这项优化具有动态特性,延迟改善效果取决于数据分布以及查询中是否存在其他谓词。

可能的值:

  • 0 — 已禁用。
  • 1 — 已启用。

use_top_k_dynamic_filtering_for_variable_length_types

类型
Bool
默认值
0
版本历史
版本默认值注释
26.50默认对变长排序列(例如 `String`)禁用 `use_top_k_dynamic_filtering`;此前该优化会无条件应用,此行为在 `compatibility` 下保留。

允许在排序列为变长数据类型 (例如 StringArrayMap、包含变长元素的 Tuple) 时应用 use_top_k_dynamic_filtering

对于这类类型,当列的字典序最小值占主导 (例如大多为空字符串) 且只能跳过很少的粒度时,动态过滤执行逐行阈值比较的开销可能会超过其带来的收益。在这种情况下,动态过滤会增加查询延迟,而非带来改进。

当此设置为 0 时,动态过滤仅适用于值在内存中具有固定最大大小的列 (数值、DateDateTimeFixedStringEnum、这些类型的 Nullable 以及这些类型的 Tuple) 。设置为 1 时,动态过滤也会应用于变长类型。

可选值:

  • 0 — 禁用。
  • 1 — 启用。
Navigation