기본 키(primary key) 확인하기
테이블 생성
toUnixTimestamp(timestamp)가 포함되어 있다는 점에 유의하세요.
데이터 채우기
기본 필터링
49.15 thousand. 이는 전체 1억 개 행 중 일부에 해당한다는 점에 유의하십시오.
EXPLAIN indexes=1 절로 인덱스가 사용되는지 확인할 수 있습니다:
8012가 전체 12209 중 일부에 불과하다는 점에 주목하십시오. 아래에 강조 표시된 섹션은 기본 키(primary key) 코드가 사용되었음을 확인해 줍니다.
순서 지정 키에서 뒤쪽에 있는 키로 필터링하면 튜플 앞쪽에 있는 키로 필터링하는 경우보다 효율이 떨어집니다. 이유는 여기를 참고하십시오.
여러 키로 필터링하기
code와 timestamp를 기준으로 필터링한다고 가정해 보겠습니다.
87개의 그래뉼만 읽으면 됩니다.
정렬에서 키 사용하기
EXPLAIN pipeline을 사용하면 여기에서 이 최적화가 적용되지 않았음을 확인할 수 있습니다:
MergeTreeSelect(pool: ReadPool, algorithm: Thread) 줄은 최적화가 사용되고 있음을 의미하는 것이 아니라, 일반적인 읽기를 의미합니다. 이는 테이블 순서 지정 키에 timestamp가 아니라 toUnixTimestamp(Timestamp)를 사용했기 때문입니다. 이 불일치를 바로잡으면 문제가 해결됩니다: