데이터베이스
2017. 6. 30. 08:00
Function Based Index 또는 Descending Index로 인덱스 생성 시 Dictionary 테이블(ALL_IND_COLUMNS)의 인덱스 컬럼이 SYS_로 시작하는 알 수 없는 컬럼으로 조회가 됩니다. 또는 ALL_TAB_COLS 테이블에는 생성하지 않는 컬럼(SYS_로 시작하는)이 조회됩니다. 테이블 정의서 작성을 위해 위의 Dictionary 테이블을 사용할 때 주의하세요!
Descending Index 생성 및 Dictionary 테이블 조회
1. 테스트 테이블 생성 및 Descending Index 생성
1 2 3 4 5 6 7 8 9 10 | /* 테이블 생성 */ CREATE TABLE TB_IND_TEST( COL1 VARCHAR2(10), COL2 VARCHAR2(20), COL3 VARCHAR2(30) GENERATED ALWAYS AS ( COL1 || COL2 ) VIRTUAL ); /* Descending Index 생성 */ CREATE INDEX IDX_TB_IND_TEST_01 ON TB_IND_TEST (COL1 DESC, COL2 DESC); | cs |
ALL_TAB_COLS 테이블의 HIDDEN_COLUMN항목과 VIRTUAL_COLUMN의 차이를 알기 위해 테이블을 생성 시 COL3 컬럼을 가상컬럼으로 생성하였습니다.
가상컬럼 SYNTAX
COLUMN_NAME [DATA_TYPE] [GENERATED ALWAYS] AS ( expression ) [VIRTUAL]
2. Dictionary 테이블 조회
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | /* 인덱스 컬럼 조회 */ SELECT T.INDEX_NAME , T.TABLE_NAME , T.COLUMN_NAME FROM ALL_IND_COLUMNS T WHERE 1=1 AND T.TABLE_NAME = 'TB_IND_TEST' ; /* ALL_TAB_COLUMNS 테이블 조회 */ SELECT T.TABLE_NAME , T.COLUMN_NAME , T.DATA_TYPE FROM ALL_TAB_COLUMNS T WHERE 1=1 AND T.TABLE_NAME = 'TB_IND_TEST' ORDER BY T.COLUMN_ID ; /* ALL_TAB_COLS 테이블 조회 */ SELECT T.TABLE_NAME , T.COLUMN_NAME , T.DATA_TYPE , T.HIDDEN_COLUMN , T.VIRTUAL_COLUMN FROM ALL_TAB_COLS T WHERE 1=1 AND T.TABLE_NAME = 'TB_IND_TEST' ORDER BY T.COLUMN_ID ; | cs |
- ALL_TAB_COLS 조회 결과
ALL_TAB_COLUMNS 테이블에서는 조회되는 않는 SYS_로 시작되는 컬럼이 조회가 되었습니다. Descending Index의 가상컬럼이자 히든컬럼으로 생성되었습니다.
그리고 가상컬럼으로 생성한 COL3 컬럼은 가상컬럼이지만, HIDDEN COLUMN은 아닙니다.
'데이터베이스' 카테고리의 다른 글
오라클 권한 조회 (0) | 2017.06.28 |
---|---|
오라클 계정과 권한 (0) | 2017.06.23 |
오라클 TABLESPACE와 DATAFILE (0) | 2017.06.16 |
TIMESTAMP 연산 (0) | 2017.05.11 |
오라클 - PIVOT과 UNPIVOT (0) | 2017.02.02 |