CREATE INDEX 문

CREATE INDEX 문 (CREATE INDEX Statement)

CREATE INDEX 문은 지정된 테이블의 지정된 열에 인덱스를 생성해요. DuckDB에서 인덱스는 데이터를 더 빨리 조회하고 싶을 때 만들어 주는 도구예요. 이 페이지에서는 인덱스 생성과 삭제 방법을 예시와 함께 살펴볼게요.

출처: 문서

본문

CREATE INDEX

CREATE INDEX 문은 지정된 테이블의 지정된 열(들)에 인덱스를 생성해요. 테이블 films의 id 열에 unique 인덱스 films_id_idx를 만들고 싶다면 다음과 같이 해요.

Examples

테이블 films의 id 열에 unique 인덱스 films_id_idx를 생성하기:

CREATE UNIQUE INDEX films_id_idx ON films (id);

테이블 filmsrevenue 열에 중복 값을 허용하는 인덱스 s_idx 생성하기:

CREATE INDEX s_idx ON films (revenue);

아직 존재하지 않으면 인덱스 생성하기:

CREATE INDEX IF NOT EXISTS s_idx ON films (revenue);

CREATE INDEX IF NOT EXISTS 문은 현재 "early exit"(조기 종료)이 없어요. 대신 인덱스를 생성하려 시도하고 스토리지에 커밋하기 전에만 존재 여부를 확인해요. 따라서 일찍 종료되는 다른 IF NOT EXISTS 문보다 더 오래 실행될 수 있어요.

genreyear 열에 복합 인덱스 gy_idx 생성하기:

CREATE INDEX gy_idx ON films (genre, year);

테이블 integersjk 열의 합이라는 표현식에 인덱스 i_index 생성하기:

CREATE INDEX i_index ON integers ((j + k));

Parameters

Name Description
UNIQUE 인덱스가 생성될 때(데이터가 이미 있으면)와 데이터가 추가될 때마다 테이블에서 중복 값을 확인하게 합니다. 중복 항목을 만들 결과를 낳는 삽입·업데이트 시도는 오류를 발생시킵니다.
name 생성할 인덱스의 이름.
table 인덱스할 테이블의 이름.
column 인덱스할 열의 이름.
expression 테이블의 하나 이상의 열에 기반한 표현식. 일반적으로 문법에 표시된 것처럼 괄호로 감싸야 합니다. 다만 표현식이 함수 호출 형태라면 괄호를 생략할 수 있습니다.
index type 지정된 인덱스 타입. [Indexes]({% link docs/current/sql/indexes.md %}) 참고. 선택 사항.
option Boolean true 값(예: is_cool) 또는 키-값 쌍(예: my_option = 2) 형태의 인덱스 옵션. 선택 사항.

Syntax

DROP INDEX

DROP INDEX는 데이터베이스 시스템에서 기존 인덱스를 제거해요.

Examples

인덱스 title_idx 제거하기:

DROP INDEX title_idx;

Parameters

Name Description
IF EXISTS 인덱스가 존재하지 않아도 오류를 던지지 않습니다.
name 제거할 인덱스의 이름.

Syntax

Limitations

CREATE INDEX 절은 OR REPLACE 수정자를 지원하지 않아요.

더 알아보기 (Learn more)