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'))로 재작성합니다.