인덱스란 ?
- 데이터를 빠르게 찾기 위한 도구
- 오라클에서 자동 생성 또는 개발자가 직접 생성
- 단, 인덱스 또한 생성의 개념이므로 디스크 공간을 차지함 -> 의미 없는 인덱스를 많이 만들면 오히려 안 쓰는게 더 빠름
이점 ?
- where 조건 검색시에 속도가 빠름
- 정렬 속도가 향상됨 (order 절)
- 중복 제거 속도 향상 (DISTINCT , GROUP 절)
단점 ?
- insert , update, delete 의 경우 오히려 더 느려짐
- 인덱스 생성 -> 디스크 공간 차지로 이어짐 (느려지는 문제로 이어짐)
인덱스는 언제 쓸까 ??
- 조회 중심의 테이블인 경우
- 조인 조건으로 걸리는 컬럼
- where 조건 절에 자주 들어가는 컬럼
인덱스 유의 사항
- UPPER 쓰면 인덱스가 동작 안 해요... (프론트단에서 해결해줘야해요)
- LIKE 절의 와일드카드 (%)가 앞에 있으면 인덱스가 동작 안 해요
- OR 조건시 인덱스가 동작 안 할 수도 있어요
- 인덱스를 타는지 꼭 AUTOTRACE 를 통해 확인
인덱스의 오해
- 인덱스는 꼭 pk 여야한다 (단, 반복되는 값이 적을수록 + 조인에 자주들어가는 컬럼일수록 인덱스 효과가 발휘되어서 pk가 유리할 뿐)
- 인덱스가 많을수록 속도가 빠르다 (디스크 낭비 + 조회를 제외한 insert update delete 에선 불리)
'SQL(oracle)' 카테고리의 다른 글
| [Oracle SQL] View vs Snapshot (Materialized View) 차이 (0) | 2025.09.22 |
|---|---|
| [Oracle SQL] 가로 세로 Pivot ? (ft. 돌려 돌려 돌림판) (0) | 2025.09.17 |
| [Oracle] inner ? outer ? + ? (0) | 2025.09.10 |
| SQL의 문자열 함수 (2) | 2024.03.06 |
| SQL의 숫자 함수 (0) | 2024.03.05 |