optimize_rewrite_aggregate_function_with_if
当逻辑上等价时,将以 if 表达式作为参数的聚合函数重写为等效形式。 例如,avg(if(cond, col, null)) 可以重写为 avgOrNullIf(cond, col)。这可能会提升性能。
optimize_rewrite_array_exists_to_has
当逻辑上等价时,将 arrayExists() 函数重写为 has()。例如,arrayExists(x -> x = 1, arr) 可重写为 has(arr, 1)optimize_rewrite_array_filter_length_to_array_count
将length(arrayFilter(func, arr)) 重写为 arrayCount(func, arr)。arrayFilter 会先构建一个由所有匹配元素组成的数组,而 length 取完长度后便将其丢弃;arrayCount 则只对匹配元素计数,无需构建数组。
optimize_rewrite_has_to_in
当第一个参数为常量数组时,将has 函数重写为 IN。例如,has([1, 2, 3], x) 可重写为 x IN [1, 2, 3],从而在处理常量数组时获得更好的性能
optimize_rewrite_like_perfect_affix
将具有精确前缀或后缀的 LIKE 表达式 (例如col LIKE 'ClickHouse%') 重写为 startsWith 或 endsWith 函数 (例如 startsWith(col, 'ClickHouse')) 。