피드로 돌아가기
greatCircleDistance in ClickHouse: Avoiding Full Table Scans
Dev.toDev.to
Database

Bounding Box 필터 도입을 통한 ClickHouse Full Table Scan 제거

greatCircleDistance in ClickHouse: Avoiding Full Table Scans

Mohamed Hussain S2026년 4월 20일2intermediate

Context

ClickHouse의 greatCircleDistance 함수를 활용한 거리 계산 시 인덱스 활용 불가로 인한 성능 저하 발생. Sparse Index 구조 특성상 함수 기반 조건절 사용 시 전체 데이터를 스캔하는 Full Table Scan 유발.

Technical Solution

  • Bounding Box 필터를 활용한 검색 범위 사전 제한 설계
  • lat, lon 컬럼에 BETWEEN 조건절을 적용하여 Sparse Index를 통한 Range Pruning 활성화
  • 인덱스 기반의 1차 필터링으로 처리 대상 Row 수를 획기적으로 축소
  • 축소된 데이터셋에 대해서만 greatCircleDistance 정밀 계산을 수행하는 2단계 필터링 구조 채택
  • 좌표계 단위(Degrees) 및 입력 순서(lat, lon)를 일치시킨 데이터 정밀도 확보

- ClickHouse 사용 시 함수 기반 WHERE 절이 Index Skip을 방해하는지 확인 - Geo-spatial 쿼리 작성 전 Bounding Box를 통한 검색 공간 최적화 적용 여부 검토 - Sparse Index의 특성을 고려하여 Range Scan이 가능한 조건절을 우선 배치

원문 읽기