프로젝트/데이터베이스

인덱스(INDEX)에 대한 설명, 예시 코드[ORACLE]

쿠키담임선생님 2022. 9. 26. 10:23

인덱스는 데이터베이스에서 자료를 더 찾기 쉽게 만들어주는 자료구조이다.


 

예를 들어 가위 라는 단어를 찾을때 ㄱ -> 가 -> 가위 이런 순서대로 찾으면 더욱 쉽게 찾을 수 있다.

 

하지만 모든 테이블을 인덱스로 만들면 좋지 않냐 라고 물어볼 수 있지만 그러면 좋지 않다.

 

책이 3권만 있을 경우 보이는 상태에서 하나 찾는게 훨씬 빠르다.

 

그러므로 인덱스를 사용하는 상황은 규모가 큰 테이블, 생성,수정,삭제가 드문 테이블이 적합하다.

 


인덱스 생성

 

인덱스는 기본적으로 오름차순으로 되기 때문에 내림차순으로 만들기 위해 뒤에 DESC를 선언한다.

 

CREATE INDEX 인덱스 이름 ON 정렬할테이블(정렬 방법);

 

이 문법으로 코드를 생성하면 다음과 같다.

 

CREATE INDEX NAME_DSC ON STUDENT_TABLE(NAME DESC);

 

 


인덱스 조회

 

테이블에 존재하는 인덱스를 확인하는 문법은 다음과 같다.

SELECT * FROM ALL_INDEXES WHERE TABLE_NAME = '테이블 이름';

이 문법을 적용하면

 

SELECT * FROM ALL_INDEXES WHERE TABLE_NAME ='STUDENT_TABLE';

인덱스 재생성

 

B+ TREE 자료구조상 테이블의 내용이 삭제 될 때 인덱스는 삭제가 안된 상태로 남아있는 상황이 발생한다. 이를 재배치 하기 위해 재생성을 해야하는 경우가 있다.

 

문법은 REBUILD 문법을 사용한다.

ALTER INDEX 인덱스이름 REBUILD;