- 조건식에 자주 사용되는 컬럼에 대하여 미리 색인표를 만들어 두는 것을 말한다.
- 인덱스를 만들어 두면 검색 시에 빠른 성능을 기대할 수 있다.
- 어떤 책이 한권 있다고 가정하자. 그런데 그 책이 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 |