Skip to main content
이 설정은 system.settings에서 확인할 수 있으며, 소스 코드에서 자동 생성됩니다.

optimize_and_compare_chain

필터링 기능을 향상하기 위해 AND 체인에서 상수 비교를 전파합니다. <, <=, >, >=, = 연산자와 이들의 혼합을 지원합니다. 예를 들어 (a < b) AND (b < c) AND (c < 5)(a < b) AND (b < c) AND (c < 5) AND indexHint(b < 5) AND indexHint(a < 5)로 확장됩니다. 파생된 비교는 indexHint로 래핑됩니다. 즉, 인덱스 분석(프라이머리 키, 파티션 키, 스키핑 인덱스)에 참여하여 읽기 집합을 프루닝하지만, 행당 비용이 없고 PREWHERE에 영향을 주지 않습니다. 서로 다른 테이블의 표현식을 통해 파생된 비교는 실행 가능한 상태로 유지됩니다((t1.a < t2.b) AND (t2.b < 5)는 일반 t1.a < 5를 파생함). 이는 원래 체인이 도달할 수 없는 조인 입력을 필터링할 수 있도록 조인 아래로 푸시할 수 있는 유일한 조건입니다. 기존 조건과 모순되는 파생 비교도 일반 조건으로 추가되므로 ANDfalse로 축약됩니다.

optimize_and_compare_chain_max_hash_work

쿼리 분석 중 optimize_and_compare_chain 최적화에 사용할 작업 예산으로, getTreeHash가 해시하는 쿼리 트리 노드 수(이 최적화의 주된 비용)로 측정합니다. 최적화 적용 중 해시한 노드 수가 이 값을 초과하면, 해당 쿼리의 나머지 부분에는 이 최적화를 더 이상 적용하지 않습니다. 이를 통해 비교 AND-chain이 매우 많거나 매우 큰 쿼리에서, 아무런 folding 없이 이 최적화가 분석 시간의 대부분을 차지할 수 있는 경우에도 분석 시간을 제한할 수 있습니다. 조기에 중단해도 항상 안전합니다. 단지 최적화 적용을 포기할 뿐이며, 결과는 절대 바뀌지 않습니다. 예산 제한을 비활성화하려면 0으로 설정하십시오(무제한).
마지막 수정일 2026년 8월 18일