prefer_column_name_to_alias
启用或禁用在查询表达式和子句中使用原始列名而非别名。在别名与列名相同时,这一点尤为重要,参见 Expression Aliases。启用此设置可使 ClickHouse 中的别名语法规则与大多数其他数据库引擎更兼容。 可能的值:- 0 — 列名会被替换为别名。
- 1 — 列名不会被替换为别名。
id AS x 中的 id 同时是 t1 和 t3 的列,因此它会解析为别名 t1.id + 10。
示例
启用与禁用时的区别:
查询:
prefer_external_sort_block_bytes
外部排序时优先使用最大块字节数,以减少合并期间的内存使用量。prefer_global_in_and_join
启用将IN/JOIN 运算符替换为 GLOBAL IN/GLOBAL JOIN。
可能的值:
- 0 — 已禁用。
IN/JOIN运算符不会被替换为GLOBAL IN/GLOBAL JOIN。 - 1 — 已启用。
IN/JOIN运算符会被替换为GLOBAL IN/GLOBAL JOIN。
SET distributed_product_mode=global 可以改变分布式表的查询行为,但它不适用于本地表或来自外部资源的表。这正是 prefer_global_in_and_join 设置发挥作用的时候。
例如,我们有一些提供查询服务的节点,其中包含本地表,而这些表不适合做分布式处理。我们需要在分布式处理中使用 GLOBAL 关键字——GLOBAL IN/GLOBAL JOIN——动态地将这些数据分发出去。
prefer_global_in_and_join 的另一个用例是访问由 external engine 创建的表。此设置有助于在连接这类表时减少对外部数据源的调用次数:每个查询只调用一次。
另请参阅:
- 分布式子查询,了解有关如何使用
GLOBAL IN/GLOBAL JOIN的更多信息
prefer_localhost_replica
启用/禁用在处理分布式查询时优先使用 localhost 副本。 可能的值:- 1 — 如果存在 localhost 副本,ClickHouse 始终将查询发送到该副本。
- 0 — ClickHouse 使用 load_balancing 设置指定的负载均衡策略。
如果你使用 max_parallel_replicas 而未使用 parallel_replicas_custom_key,请禁用此设置。
如果设置了 parallel_replicas_custom_key,则仅当它用于包含多个 сегмент 且每个 сегмент 都包含多个副本的集群时,才应禁用此设置。
如果它用于只有单个 сегмент 但包含多个副本的集群,禁用此设置会带来负面影响。
prefer_optimize_projection
在启用 projection 优化的情况下 (参见 optimize_use_projections 设置) ,让 projection 优化在SELECT 查询中优先使用 projections 而非表本身。
启用后,只要某个 projection 能够满足该查询,即使读取的 marks 比表本身更多,也会被使用;这一点与 force_optimize_projection 相同,但在无可用 projection 时查询不会失败。
可能的取值:
- 0 — 按预估代价选择 projection。
- 1 — 无论预估代价如何,都选择可用的 projection。