전체 용어 목록

B-tree 인덱스

PostgreSQL의 B-tree 인덱스란 무엇인가요?

B-tree는 PostgreSQL의 기본 인덱스 유형입니다. 정렬 가능한 데이터에 대한 동등 비교와 범위 비교를 처리하며, 이미 정렬된 상태로 행을 반환할 수 있습니다.

B-tree 인덱스는 균형 트리에 키를 정렬된 상태로 유지합니다. 다른 유형을 지정하지 않으면 CREATE INDEX는 B-tree를 만들며, PostgreSQL은 기본 키와 고유 제약 조건에도 B-tree를 사용합니다.

플래너는 <, <=, =, >=, > 비교와 BETWEEN, IN, 그리고 IS NULL, IS NOT NULL에 B-tree를 사용할 수 있습니다. 또한 인덱스 순서대로 행을 반환할 수 있어 ORDER BY를 위한 별도의 정렬을 생략할 수 있습니다. 모든 인덱스는 일부 읽기를 빠르게 하는 대신 모든 쓰기에 작업을 더하므로, 쿼리가 실제로 필터링하거나 정렬하는 열에 인덱스를 만드세요.

예제

이 예제는 타임스탬프 열에 인덱스를 만들고 최근 1시간 동안의 행에 대해 EXPLAIN으로 확인합니다. 출력에는 Index Scan using logs_created_at_idx가 표시됩니다.

CREATE TABLE logs (
  id bigint GENERATED ALWAYS AS IDENTITY,
  created_at timestamptz NOT NULL
);
INSERT INTO logs (created_at)
SELECT now() - g * interval '1 minute' FROM generate_series(1, 100000) AS g;
CREATE INDEX logs_created_at_idx ON logs (created_at);
ANALYZE logs;

EXPLAIN SELECT * FROM logs WHERE created_at > now() - interval '1 hour';

확장 없이 기본 PostgreSQL 16 또는 17에서 실행되는 일반 SQL입니다. 버려도 되는 빈 데이터베이스에서 실행하세요.

출처

PostgreSQL 공식 문서(영문)입니다.

관련 용어