Practice makes perfect
[DataBase] 인덱스(Index) 본문
728x90
반응형
SMALL
인덱스 = sql 명령문의 처리 속도를 향상시키기 위해서 컬럼에 생성하는 오라클 객체로서 빠른 검색을 위한 용도로 사용합니다.
인덱스 장점 vs 단점
● 장점
• 검색 속도를 빨라지게 합니다.
• 시스템에 걸리는 부하를 줄여서 시스템 전체 성능을 향상시킵니다.
•아무리 많은 데이터가 되어 있더라도 데이터베이스가 빠르게 진행시킨다.
● 단점
• 인덱스를 위한 추가적인 공간이 필요합니다.
• 인덱스를 생성하는데 시간이 걸립니다.
• 데이터의 변경 작업(insert/update/delete)이 자주 일어날 경우에는 오히려 성능이 떨어집니다.
- 결과적으로 성능을 위해서는 필수적인 기능이라고 할 수 있습니다. 데이터의 온전성을 유지하기 위해서 단점이 있음에도 장점이 더 크기 때문에 사용되고 있다고 생각하시면 됩니다.
1) 인덱스 정보 조회하기
select index_name, table_name, column_name
from user_ind_columns
where table_name in('EMP', 'DEPT');
2) 조회 속도 비교하기
select distinct empno, ename
from emp01
where ename = 'ANGEL'; -- 1.324초(INDEX 연결x)
select distinct empno, ename
from emp01
where ename = 'ANGEL'; -- index 생성 이후 1.324초 에서 0.213초 로 줄어들었다.
3) 인덱스 생성
기본키나 유일키가 아닌 컬럼에 대해서 인덱스를 지정하려면 create index 명령어를 사용.
create index idx_emp01_ename
on emp01(ename);
-- index 를 만들어서 emp01에 연결 시키는 것입니다. / index 생성 시간은 오래 걸립니다. 46.762초
4) 인덱스 제거
drop index idx_emp01_ename;
인덱스 사용이 효과젹일 때 |
인덱스 사용이 불필요할 때 |
테이블에 행의 수가 많을 때 |
테이블 행의 수가 적을 때 |
where 절/ 외래키 / order by 에 해당 컬럼이 많이 사용될 때 |
True, False 값을 가지는 컬럼처럼 중복도가 높은 컬럼일때 |
검색 결과가 전테 데이터의 2~4% |
검색 결과가 전체 데이터의 10~15% 이상일 때 |
join에 자주 사용되는 컬럼, null을 포함하는 컬럼이 많을 떄 |
select, insert, update 등 변동 작업이 많을 때 |
728x90
반응형
LIST
'빅데이터 > DataBase' 카테고리의 다른 글
[DataBase] 동의어 (Synonym) (0) | 2020.04.14 |
---|---|
[DataBase] 데이터 제어어(DCL : Data Control Language) (0) | 2020.04.14 |
[DataBase] 시퀀스(Sequence) (0) | 2020.04.14 |
[DataBase] 뷰(View) (0) | 2020.04.13 |
[DataBase] 서브 쿼리 (Sub - Query)문 (0) | 2020.04.12 |