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);
테이블 films의 revenue 열에 중복 값을 허용하는 인덱스 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문보다 더 오래 실행될 수 있어요.
genre와 year 열에 복합 인덱스 gy_idx 생성하기:
CREATE INDEX gy_idx ON films (genre, year);
테이블 integers의 j와 k 열의 합이라는 표현식에 인덱스 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 수정자를 지원하지 않아요.