Open Source RDBMS - Seamless, Scalable, Stable and Free

한국어 | Login |Register

Versions available for this page: CUBRID 8.2.1 |  CUBRID 8.3.0 |  CUBRID 8.3.1 |  CUBRID 8.4.0 |  CUBRID 8.4.1 |  CUBRID 8.4.3 |  CUBRID 9.0.0 | 

CREATE INDEX

설명

CREATE INDEX 구문을 이용하여 지정한 테이블에 인덱스를 생성한다. 인덱스 이름 작성 원칙은 식별자를 참고한다.

USING INDEX, 내림차순 인덱스, 커버링 인덱스, 인덱스 스킵 스캔, ORDER BY 최적화, GROUP BY 최적화 등 SELECT 문에서 인덱스를 이용하는 방법과 필터링된 인덱스, 함수 인덱스를 생성하는 방법에 대해서는 인덱스 활용을 참고한다.

구문

CREATE [ REVERSE ] [ UNIQUE ] INDEX index_name

ON table_name <index_col_desc> [ ; ]

 

<index_col_desc> ::=

    ( column_name[(prefix_length)] [ASC | DESC] [ {, column_name[(prefix_length)] [ASC | DESC]} ...] ) [ WHERE <filter_predicate> ]

    | (function_name (argument_list) )

  • REVERSE : 역순으로 인덱스를 생성한다. 역순 인덱스는 내림차순 정렬 연산 속도를 향상시킨다.
  • UNIQUE : 유일한 값을 갖는 고유 인덱스를 생성한다.
  • index_name : 생성하려는 인덱스의 이름을 명시한다. 인덱스 이름은 테이블 안에서 고유한 값이어야 한다.
  • prefix_length : 문자열 또는 비트열 타입의 칼럼에 인덱스를 설정하는 경우, 칼럼 값의 앞 부분 일부를 prefix로 지정하여 인덱스를 생성하기 위하여 칼럼 이름 뒤 괄호 안에 문자 개수로 prefix 길이를 지정할 수 있다. 단, prefix_length는 다중 칼럼 인덱스 및 UNIQUE 인덱스에는 지정할 수 없다. 또한 prefix_length를 호스트 변수로 지정하여 인덱스를 생성할 수 없다. prefix_length가 지정된 인덱스에서 질의 결과의 순서를 보장하려면 반드시 ORDER BY 절을 명시해야 한다.
  • table_name : 인덱스를 생성할 테이블의 이름을 명시한다.
  • column_name : 인덱스를 적용할 칼럼의 이름을 명시한다. 다중 칼럼 인덱스를 생성할 경우 둘 이상의 칼럼 이름을 명시한다.
  • ASC | DESC : 칼럼의 정렬 방향을 설정한다. REVERSE 인덱스인 경우 ASC는 무시되고 DESC로 처리된다.  
  • <filter_predicate> : 필터링된 인덱스를 만드는 조건을 명시한다. 칼럼과 상수 간 비교 조건이 여러 개인 경우 AND로 연결된 경우에만 필터가 될 수 있다.
  • function_name (argument_list) : 함수 기반 인덱스를 만드는 조건을 명시한다.

참고 CUBRID 9.0 미만 버전에서는 인덱스 이름을 생략할 수 있었으나, CUBRID 9.0 버전부터는 인덱스 이름을 생략할 수 없다.

예제 1

다음은 역순 인덱스를 생성하는 예제이다.

CREATE REVERSE INDEX gold_index ON participant(gold);

예제 2

다음은 다중 칼럼 인덱스를 생성하는 예제이다.

CREATE INDEX name_nation_idx ON athlete(name, nation_code);

예제 3

다음은 단일 칼럼 인덱스를 생성하는 예제이다. 문자열 타입으로 정의한 nation_code 칼럼에 대해서 1바이트 길이만큼 prefix를 지정하여 인덱스를 생성한다.

CREATE INDEX idx_game_nation_code ON game(nation_code(1));