optimize_aggregators_of_group_by_keys
optimize_append_index
false입니다.
가능한 값:
- true, false
optimize_arithmetic_operations_in_aggregate_functions
optimize_const_name_size
- 양의 정수 - 이름의 최대 길이,
- 0 — 항상,
- 음의 정수 - 절대 사용 안 함.
optimize_count_from_files
file/s3/url/hdfs/azureBlobStorage에 적용됩니다.
가능한 값:
- 0 — 최적화가 비활성화됩니다.
- 1 — 최적화가 활성화됩니다.
optimize_dictget_tuple_element
tupleElement(dictGet('dict', ('a', 'b', 'c'), key), 2)를 dictGet('dict', 'b', key)로 재작성합니다. 위치 기반(.1, .2, …) 및 이름 기반(.b) 접근을 지원하며, 기본값 인수가 상수 Tuple 또는 상수들로 이루어진 tuple(...)인 경우에는 dictGetOrDefault에도 적용됩니다.
optimize_distinct_in_order
optimize_distributed_group_by_sharding_key
GROUP BY sharding_key 쿼리를 최적화합니다(이에 따라 시작 서버에서 해당 쿼리의 메모리 사용량이 줄어듭니다).
다음 유형의 쿼리가 지원됩니다(및 이들의 모든 조합):
SELECT DISTINCT [..., ]sharding_key[, ...] FROM distSELECT ... FROM dist GROUP BY sharding_key[, ...]SELECT ... FROM dist GROUP BY sharding_key[, ...] ORDER BY xSELECT ... FROM dist GROUP BY sharding_key[, ...] LIMIT 1SELECT ... FROM dist GROUP BY sharding_key[, ...] LIMIT 1 BY x
SELECT ... GROUP BY sharding_key[, ...] WITH TOTALSSELECT ... GROUP BY sharding_key[, ...] WITH ROLLUPSELECT ... GROUP BY sharding_key[, ...] WITH CUBESELECT ... GROUP BY sharding_key[, ...] SETTINGS extremes=1
- 0 — 비활성화됨.
- 1 — 활성화됨.
현재는
optimize_skip_unused_shards가 필요합니다(이유는 언젠가 이 설정이 기본적으로 활성화될 수 있고, 데이터가 Distributed 테이블을 통해 삽입되어 sharding_key에 따라 분산된 경우에만 올바르게 동작하기 때문입니다).optimize_dry_run_check_part
OPTIMIZE ... DRY RUN이 checkDataPart를 사용해 최종적으로 병합된 파트를 검증합니다. 검증에 실패하면 예외가 발생합니다.
optimize_empty_string_comparisons
col = '' 또는 '' = col과 같은 표현식은 empty(col)로, col != '' 또는 '' != col과 같은 표현식은 notEmpty(col)로 변환합니다.
이는 col이 String 또는 FixedString 타입인 경우에만 적용됩니다.
optimize_extract_common_expressions
(A AND B) OR (A AND C)와 같은 논리 표현식은 A AND (B OR C)로 재작성될 수 있으며, 이는 다음 최적화에 도움이 될 수 있습니다.
- 단순한 필터링 표현식에서 인덱스 활용
- cross를 inner join으로 최적화
optimize_functions_to_subcolumns
- length를 size0 서브컬럼을 읽도록 변환합니다.
- empty를 size0 서브컬럼을 읽도록 변환합니다.
- notEmpty를 size0 서브컬럼을 읽도록 변환합니다.
- isNull을 null 서브컬럼을 읽도록 변환합니다.
- isNotNull을 null 서브컬럼을 읽도록 변환합니다.
- count를 null 서브컬럼을 읽도록 변환합니다.
- mapKeys를 keys 서브컬럼을 읽도록 변환합니다.
- mapValues를 values 서브컬럼을 읽도록 변환합니다.
- 0 — 최적화가 비활성화됩니다.
- 1 — 최적화가 활성화됩니다.
optimize_inverse_dictionary_lookup
optimize_multiif_to_if
multiIf를 if로 대체합니다.
optimize_normalize_count_variants
optimize_on_insert
- 0 — 비활성화됨.
- 1 — 활성화됨.
optimize_prewhere_after_pushdown
MergeTree 읽기 단계 위에 추가 필터가 배치될 수 있는 경우(예: JOIN을 통한 프레디케이트 pushdown, projection 재작성), 그 이후 두 번째 PREWHERE 승격 패스를 실행합니다. 기존 PREWHERE가 이미 있으면 새 필터는 별도의 필터 단계로 남지 않고 여기에 AND로 병합됩니다.
optimize_qbit_distance_function_reads
QBit 데이터 타입의 거리 함수를 저장소에서 계산에 필요한 컬럼만 읽는 동등한 함수로 대체합니다.
optimize_read_in_order
- 0 —
ORDER BY최적화가 비활성화됩니다. - 1 —
ORDER BY최적화가 활성화됩니다.
optimize_respect_aliases
optimize_sorting_by_input_stream_properties
optimize_substitute_columns
false입니다.
가능한 값:
- true, false
optimize_syntax_fuse_functions
- 0 — 동일한 인수를 사용하는 함수는 결합되지 않습니다.
- 1 — 동일한 인수를 사용하는 함수는 결합됩니다.
optimize_throw_if_noop
OPTIMIZE는 아무 작업도 수행하지 않았더라도 성공으로 처리됩니다. 이 설정을 사용하면 이러한 상황을 구분하고 예외 메시지에서 그 이유를 확인할 수 있습니다.
가능한 값:
- 1 — 예외 발생이 활성화됩니다.
- 0 — 예외 발생이 비활성화됩니다.
optimize_time_filter_with_preimage
toYear(col) = 2023 -> col >= '2023-01-01' AND col <= '2023-12-31')
optimize_truncate_order_by_after_group_by_keys
optimize_uniq_to_count
optimize_using_constraints
false입니다.
가능한 값:
- true, false