Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- cmd
- httpservletreqeust
- servicename
- 키보드
- 영상편집
- http
- 스레드 덤프
- Tomcat
- 프로세스
- JDBC
- 안드로이드 스튜디오
- 톰캣
- MySQL
- 스레드
- MariaDB
- Linux
- HTML
- letterspacing
- 오블완
- SID
- ibatis
- oracle
- wsdl
- Database
- java
- service name
- 컨트롤러
- 티스토리챌린지
- API
- Docker
Archives
- Today
- Total
블로그 이름
[Oracle] 인덱스가 걸려있는데 FULL SCAN 하는 이유 본문
A 테이블에 인덱스를 걸어놨는데 실행계획을 살펴보니
A테이블을 사용한 뷰 에서 조회할때는 RANGE SCAN을 하는데
A테이블에서 조회할때는 인덱스를 타지 않고 FULL SCAN 하는 현상이 있어 원인을 찾아봤다
인덱스가 많은 행을 반환한다면, 옵티마이저가 전체 테이블 스캔이 더 효율적이라고 판단할 수 있다고 한다.
뷰에서 A테이블을 조회할 때, 뷰에 적용된 조건절이 인덱스에 적합하게 설계되어 있다면 옵티마이저가 인덱스를 사용할 수 있다고 한다.
하지만 테이블을 직접 조회할 때는 조건절이 달라 인덱스를 타지 못할수도 있다고 한다.
그래서 A테이블을 조회할때 VIEW 테이블과 같이 WHERE절 조건을 바꿔줬더니 A테이블 조회할때도 인덱스를 탄다
예상가는 원인으로는
A테이블을 조회할때 인덱스를 안타고 FULLSCAN 돌았을 때는 WHERE절에 INDEX를 타나 FULLSCAN을 하나 결과가 다르지 않은 조건을 줬고,
RANGESCAN 돌때는 결과 행이 적게 나오는 조건을 줬다
'개발 > Database' 카테고리의 다른 글
[Oracle] 테이블 스페이스 설정하여 User 생성하기 (0) | 2024.09.05 |
---|---|
[Oracle] 실행계획 COST, Cardinality, Bytes 뜻 (0) | 2024.09.05 |
Maria DB 데이터베이스 생성, 계정 생성, 권한 부여 (0) | 2024.04.07 |
MariaDB 데이터베이스 생성, 계정 생성, 권한 주기 (0) | 2024.03.18 |
WHERE IN 절 1000개 제한 (0) | 2024.02.15 |