본문으로 바로가기
반응형

 

 

 

 


 

 

 

 

INDEX란,,

 

 

 

SQL명령문의 처리 속도를 향상하기 위해

칼럼에 대해 생성하는 오라클 객체로,

 

 

 

내부 구조는 B*트리 형식으로 구성되어 있습니다.

 

 

 

 

 

 

 


인덱스(INDEX)의 장/단점

 

 

 

 

● 장점



검색 속도가 빨라지고 시스템에 걸리는 부하를 줄여
시스템 전체 성능을 향상합니다.

 

 

 


○ 단점



인덱스를 위한 추가 저장 공간이 필요하고 

인덱스를 생성하는데 시간이 걸립니다.


데이터의 변경 작업(INSERT/UPDATE/DELETE)이 자주 일어날 경우,

오히려 성능이 저하될 수 있습니다.

 

 

 

 

 

 

 

 


 

INDEX 표현식

 

 

 

 

 

INDEX의 표현식은 아래와 같습니다.

 

 

 

 

 

 

생성할 인덱스 명을 입력함과 동시에

해당 테이블의 인덱스 삼고 싶은 칼럼을 ON절에 작성해줍니다.

 

 

 

 

인덱스를 생성 후 조회하면,,

 

 

 

 

 

위와 같이 조회가 됩니다.

 

 

 

 

 

 

 

 

 


 

INDEX 구조

 

 

 

 

 

 

 

인덱스 구조는 아래와 같이 돼있습니다.

 

 

 

 

 

 

각 위치마다 의미하는 것을 암기할 필요는 없지만,

순차적으로 KEY와 ROWID가 있는 것을 볼 수 있습니다.

 

 

 

 

 

예시로, 

 

현재 제가 사용하고 있는 테이블의 인덱스를 조회하자면

 

 

 

 

 

 

위와 같이 KEY, ROW_ID가 조회되는 것을 볼 수 있습니다.

 

 

 

 

 

 

 

 

 

 


 

INDEX 종류

 

 

 

 

 

INDEX 종류는 아래와 같습니다.

 

 

 

 

 

각각의 INDEX들을 살펴봅시다.

 

 

 

 

 

 

 


 

○ 고유 인덱스(UNIQUE INDEX)

 

 

 

 

 

 

 

 


 

비고유 인덱스(NONUNIQUE INDEX)

 

 

 

 

 

 

 

 


 

결합 인덱스(COMPOSITE INDEX)

 

 

 

 

 

 

 

 


 

함수 기반 인덱스(FUNCTION-BASED INDEX)

 

 

 

 

 

 

 

 

 

 

 

 


 

INDEX 삭제 / 재생성

 

 

 

 

▷ INDEX 삭제

 

 

     INDEX 삭제는 일반 삭제 명령과 동일합니다.

 

 

     DROP INDEX [인덱스명];

 

 

 

 

 

▷ INDEX 재생성

 

 

     DML 작업(특히 DELETE 명령)을 수행한 경우,
     해당 인덱스 엔트리가 논리적으로만 제거되고 실제 엔트리는 남아있게 되므로

     제거된 인덱스가 필요 없는 공간을 차지하고 있지 않도록 인덱스를 재생성해야 합니다.

 

 

      INDEX 재생성은 다음과 같은 명령어를 실행해줍니다.

 

 

      ALTER INDEX 인덱스명 REBUILD;

 

 

 

 

 

 

 


 

▶ INDEX 활용한 정렬

 

 

 

 

 

특별히 요구되는 조건문이 없을 경우, 데이터 조회를 원할 때

 

WHERE 조건절에 의한 검색보다는

 

인덱스를 통한 검색이 성능상 더 우수할 수 있습니다.

 

 

 

 

 

 


 

 

 

 

 

 

그럼 오라클 INDEX의 간단한 예제를 풀어봅시다.

 

 

 

 

 

 

 

 

 


SQL(INDEX) 예제


 

 

 

 

 

난이도 ☆

 

 

 

예제 1

 

 

Q :     TB_STUDENT 테이블의 칼럼을 확인하여서 

         학번이 내림차순으로 정렬된 INDEX를 생성하라.

 

   

TB_STUDENT의 정보


 

 

 

 

풀이 :

 

 



CREATE UNIQUE INDEX IDX_TEST_STUDENT_NO ON IDX_TEST(STUDENT_NO DESC);

 

 

 


 

 

 

반응형