본문으로 바로가기

[Oracle] 인덱스의 속도 비교

category 2. Database/2_1 Oracle 2020. 3. 22. 22:37

   

 

인덱스란?

- 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;

 


인덱스를 사용해야 하는 경우 판단하기