본문 바로가기
Kosta DevOps 과정 280기/Java

index

by 롯슈83 2024. 6. 24.
  • 조건식에 자주 사용되는 컬럼에 대하여 미리 색인표를 만들어 두는 것을 말한다.
  • 인덱스를 만들어 두면 검색 시에 빠른 성능을 기대할 수 있다.
  • 어떤 책이 한권 있다고 가정하자. 그런데 그 책이 10페이지가 안된다. 이런 경우에는 굳이 색인표를 만들 필요가 없다.
  • 이 경우에 색인표를 만들거나 안만들거나 성능 차이를 기대할 수 없다. 책이 굉장이 두꺼우면, 1000페이지 600페이지정도 된다면 색인표가 있으면 빠르게 찾는 것을 도움 받을 수 있다.
  • 이것처럼 데이터 양(레코드 수) 이 많을 때 검색(조건식) 에 빈번히 사용하는 컬럼에 대하여 "인덱스"를 만들어두면 검색 시에 성능 향상을 기대할 수 있다.
  • 데이터를 빈번하게 수정하는 컬럼에 인덱스를 넣는것은 오히려 성능 저하의 요인이 된다.

만드는 방법

create index 인덱스이름 on 테이블이름(칼럼이름[들]);

 

인덱스 재구성 하기

alter index 인덱스이름 rebuild;

 

인덱스 삭제하기

drop index 인덱스이름;

 

예제 문제

-- 도서명에 인덱스 만들기
create index idx_book on book(bookname);
select * from book;
update book set bookname = '재미있는 오라클'
where bookid = 15;
-- 위와 같이 만들어 둔 칼럼 bookname 에 대하여 자료 수정, 추가, 삭제가 빈번히 일어났다면 오히려 성능 저하의 요인이 될 수 있다.
-- 수정, 삭제, 추가 등이 발생하면 인덱스를 재구성해야 한다.
alter index idx_book rebuild;

-- 인덱스 삭제하기
drop index idx_book;
  • 인덱스가 효과를 발휘하려면 또 인덱스를 설정한 칼럼의 같은 값의 종류가 많지 않아야 한다. 
    • 100만건의 데이터 중에 "주소"칼럼의 값의 종류가 "서울", "울산", "광주" 3가지 밖에 ㅇ벗을 때는 인덱스가 오히려 성능 저하의 요인이 된다. 이때는 인덱스를 삭제하는 것이 좋다.

'Kosta DevOps 과정 280기 > Java' 카테고리의 다른 글

trigger  (0) 2024.06.24
PL/SQL  (0) 2024.06.24
뷰(View)  (0) 2024.06.24
서브쿼리 위치에 따른 용어  (0) 2024.06.21
rownum 속성  (0) 2024.06.21