인덱스란?
- SQL 명령문의 처리 속도를 향상시키기 위해서 컬럼에 대해서 생성하는 오라클 객체입니다.
인덱스를 왜 사용하는 것일까요?
- 빠른 검색을 하기 위해서 사용합니다.
인덱스의 장점
-
검색 속도가 빨라집니다.
-
시스템에 걸리는 부하를 줄여서 시스템 전체 성능을 향상시킨다.
인덱스의 단점
-
인덱스를 위한 추가 공간이 필요하다.
-
인덱스를 생성하는데 시간이 걸린다.
-
데이터의 변경 작업 (INSERT, UPDATE, DELETE)이 자주 일어날 경우에는 오히려 성능이 저하된다.
인덱스 정보 조회
-
책의 색인란과 동일한 역할인 쿼리를 빠르게 수행하기 위한 용도로 사용되는 인덱스는 기본 키나 유일 키와 같은 제약 조건을 지정하면 따로 생성하지 않더라도 자동으로 생성해줍니다.
-
기본 키나 유일 키는 데이터 무결성을 확인하기 위해서 수시로 데이터를 검색하기 때문에 빠른 조회를 목적으로 오라클에서 내부적으로 해당 컬럼에 인덱스를 자동으로 생성하는 것입니다.
-
인덱스 역시 테이블이나 뷰나 시퀀스와 같이 오라클 객체의 일종이고 모든 객체들은 이름이 있어야 합니다.
-
기본 키나 유일 키에 대한 인덱스는 오라클이 생성한 것이기에 인덱스의 이름 역시 오라클에서 자동 부여해 줍니다.
-
자동으로 생성되는 인덱스 이름은 제약 조건(CONSTRAINT)명을 사용함을 확인할 수 있습니다.
인덱스 유무 속도 비교
- 인덱스가 존재하는 테이블의 속도
- 인덱스가 존재하지 않는 테이블의 속도
사실 위의 테이블안에 있는 데이터로 인덱스 속도를 비교하기는 애매합니다.
테이블안에 데이터가 많다면 인덱스를 쓰고 안쓰고를 비교할 때 속도차이가 확 납니다.
인덱스 생성하기
- 제약조건에 의해 자동으로 생성되는 인덱스 외에 CREATE INDEX 명령어로 직접 인덱스를 생성할 수 있습니다.
CREATE INDEX index_name
ON table_name (column_name);
EX) EMP01의 컬럼 중에서 ENAME에 대해서 인덱스를 생성해봅시다.
CREATE INDEX IDX_EMP01_ENAME
ON EMP01(ENAME);
인덱스 삭제하기
DROP INDEX index_name;
인덱스를 사용해야 하는 경우 판단하기
'2. Database > 2_1 Oracle' 카테고리의 다른 글
[Oracle] REGEXP_COUNT() - 특정 문자의 개수를 세는 함수 (0) | 2020.03.26 |
---|---|
[Oracle] RATIO_TO_REPORT() - 비율을 구하는 함수 (0) | 2020.03.26 |
[Oracle] 데이터 딕셔너리 뷰 (0) | 2020.03.22 |
[Oracle] ALTER TABLE ADD - 컬럼 추가하는 방법 (0) | 2020.03.22 |
[Oracle] UNION과 UNION ALL의 개념 및 예제 쿼리 (0) | 2020.03.20 |