INDEX | SQL명령문의 처리 속도를 향상시키기 위해서 컬럼에 대해서 생성하는 오라클 객체이다. 내부구조는 이진트리 형식으로 구성되어 있음 |
INDEX의 장점 | 검색속도가 빨라지고 시스템에 걸리는 부하를 줄여서 시스템 전체 성능을 향상 |
INDEX의 단점 | 인덱스를 위한 추가 저장 공간이 필요하고, 인덱스를 생성하는데 시간이 걸린다. 따라서 데이터의 변경 작업(INSERT/UPDATE/DELETE)이 자주 일어날 경우에는 오히려 성능이 저하 |
INDEX 표현식
CREATE [UNIQUE] INDEX 인덱스명
ON 테이블명 (
컬럼명
,컬럼명 | 함수명, 함수계산식
);
INDEX 구조
KEY | ROWID |
200 | AAAE7UAABAAALC5AAA |
201 | AAAE7UAABAAALC5AAB |
202 |
AAAE7UAABAAALC5AAC |
AAAE7UAABAAALC5AAA | |||
AAAE7UA | ABA | AALC5 | AAA |
데이터 오브젝트번호 | 파일 번호 | BLOCK 번호 | ROW 번호 |
INDEX 종류 | |
1. 고유 인덱스(UNIQUE INDEX) | 중복값이 포함될 수 없음 PRIMARY KEY 제약조건을 생성하면 자동으로 생성됨 |
2. 비고유 인덱스(NONUNIQUE INDEX) | 빈번하게 사용되는 일반 컬럼을 대상으로 생성함 주로 성능 향상을 위한 목적으로 생성 |
3. 단일 인덱스(SINGLE INDEX) | 한 개의 컬럼으로 구성한 인덱스 |
4. 결합 인덱스(COMPOSITE INDEX) | 두 개 이상의 컬럼으로 구성한 인덱스 |
5. 함수 기반 인덱스(FUNCTION-BASED INDEX) | SELECT 절이나 WHERE 절에 산술계산식이나 함수식이 사용된 경우 - 계산식은 인덱스의 적용을 받지 않음 |
UNIQUE INDEX | |
생성 | CREATE UNIQUE INDEX IDX_EMPNO ON EMPLOYEE(EMP_NO); |
UNIQUE INDEX는 중복 값이 있는 컬럼에 생성 시 에러가 발생 |
CREATE UNIQUE INDEX IDX_DEPTCODE ON EMPLOYEE(DEPT_CODE); |
NONUNIQUE INDEX | |
NONUNIQUE INDEX는 중복 값이 있는 컬럼에도 생성 가능 | CREATE INDEX IDX_DEPTCODE ON EMPLOYEE(DEPT_CODE); |
COMPOSITE INDEX | COMPOSITE INDEX는 두 개 이상의 컬럼을 하나의 인덱스로 생성 COLUMN_POSITION의 순서에 의해 성능이 차이날 수 있음 |
생성 | CREATE INDEX IDX_DEPT ON DEPARTMENT(DEPT_ID,DEPT_TITLE); |
FUNCTION – BASED INDEX | |
TABLE EMP_SAL 생성 CREATE TABLE EMP_SAL AS SELECT EMP_ID , EMP_NAME , SALARY , BONUS , (SALARY +(SALARY + NVL(BONUS,0))) * 12 연봉 FROM EMPLOYEE; |
INDEX IDX_SALCALC 생성 CREATE INDEX IDX_SALCALC ON EMP_SAL ((SALARY + (SALARY * NVL(BONUS,0))) * 12); |
FUNCTION – BASED INDEX | SELECT * FROM USER_IND_COLUMNS WHERE TABLE_NAME = 'EMP_SAL'; |
INDEX | DML작업(특히 DELETE)명령을 수행한 경우, 해당 인덱스 엔트리가 논리적으로만 제거되고 실제 엔트리는 그냥 남아있게 된다. 제거된 인덱스가 필요없는 공간을 차지하고 있기 때문에 인덱스를 재생성 할 필요가 있음 |
표현식 | ALTER INDEX 인덱스명 REBUILD; |
SMALL
'SQL' 카테고리의 다른 글
SQL8,9 ORACLE OBJECT(VIEW) , OBJECT(SEQUENCE) (1) | 2023.01.17 |
---|---|
SQL7 DML(Data Manipulation Language) (0) | 2023.01.17 |
SQL6 DDL(Data Definition Language) (0) | 2023.01.17 |
SQL4,5 JOIN,SUBQUERY (0) | 2023.01.16 |
SQL3 GROUP BY & HAVING (0) | 2023.01.16 |