인덱스 생성 제약에 내용을 살펴보자.
테스트를 위해 아래와 같이 테이블을 생성하자.
-- 1 DROP TABLE t1 PURGE; DROP TABLE t2 PURGE; CREATE TABLE t1 ( c01 NUMBER, c02 NUMBER, c03 NUMBER, c04 NUMBER, c05 NUMBER , c06 NUMBER, c07 NUMBER, c08 NUMBER, c09 NUMBER, c10 NUMBER , c11 NUMBER, c12 NUMBER, c13 NUMBER, c14 NUMBER, c15 NUMBER , c16 NUMBER, c17 NUMBER, c18 NUMBER, c19 NUMBER, c20 NUMBER , c21 NUMBER, c22 NUMBER, c23 NUMBER, c24 NUMBER, c25 NUMBER , c26 NUMBER, c27 NUMBER, c28 NUMBER, c29 NUMBER, c30 NUMBER , c31 NUMBER, c32 NUMBER, c33 NUMBER, c34 NUMBER, c35 NUMBER); CREATE TABLE t2 (c1 VARCHAR2(4000), c2 VARCHAR2(4000), c3 VARCHAR2(4000));
아래 쿼리는 에러가 발생한다. 인덱스 열을 32개까지 지정할 경우가 흔치 않으므로 의미가 크지 않은 제약이다.
-- 2 CREATE INDEX t1_x1 ON t1 ( c01, c02, c03, c04, c05 , c06, c07, c08, c09, c10 , c11, c12, c13, c14, c15 , c16, c17, c18, c19, c20 , c21, c22, c23, c24, c25 , c26, c27, c28, c29, c30 , c31, c32, c33, c34, c35); ORA-01793: 지정 가능한 인덱스 열의 최대수는 32 입니다
아래 쿼리도 에러가 발생한다. 값의 실제 길이가 아닌 데이터 타입 길이에 의한 제약이라는 점에 주의할 필요가 있다. 물리 모델에서 가변 길이인 VARCHAR2 타입의 크기를 일괄 4000으로 지정해 인덱스 구성에 문제되었던 사례도 있었다.
-- 3 CREATE INDEX t2_x1 ON t2 (c1, c2, c3); ORA-01450: 키의 최대 길이(6398)를 초과했습니다
'Oracle > Administration' 카테고리의 다른 글
PK 제약조건과 NOT NULL 제약조건 (0) | 2018.12.27 |
---|---|
오브젝트 명의 고유성 (0) | 2018.11.15 |
CHAR(1) vs VARCHAR2(1) (0) | 2018.10.17 |
히든 파라미터 조회 뷰 생성 (0) | 2018.10.16 |
인덱스 브랜치 블록 (0) | 2018.10.09 |