오라클 인덱스 0 4 803

by 쥬발자 [2022.01.24 16:43:50]


A, B ,C 세개의 테이블

A.TREE = C.TREE

A.FLOWER = B.FLOWER 조인을 하고 있는 쿼리입니다

A테이블에는 두개의 조건문이 있어서 인덱스를 힌트를 써서 태울수 있는데

B,C 각각의 테이블에는 조건문을 사용할것이 없는데 인덱스를 어떻게 사용해야할까요? 

TABLE FULL SCAN 이 안뜨게끔 인덱스를 사용하고 HASH JOIN말고 NESTED LOOP를 타게 하라 하셔서요... 머리가 터질것 같아요.... 도와주세요............

by 마농 [2022.01.24 16:50:54]

A 에는 (조건컬럼1, 조건컬럼2) 결합인덱스
B 에는 flower 인덱스
C 에는 tree 인덱스


by 쥬발자 [2022.01.24 16:52:41]

A테이블에는 flower와 tree 인덱스를 만들지 않아도 되나요??

그리고 B테이블과 조인하는 또다른 D테이블에서는
B.APPLE = D.APPLE로 조인을 하는데
그럼 D테이블에만 APPLE 인덱스만 주면 되는건가요?? B테이블에는 만들지않고??ㅠㅠㅠ


by 쥬발자 [2022.01.24 17:04:31]

왜 인덱스 힌트를 써줘서 인덱스 타는 쿼리가 풀스캔으로 불러오는 쿼리 보다 속도가 늦어질까요...?


by 마농 [2022.01.24 17:18:11]

1. 인덱스는 빨리 찾기 위한 도구입니다.
- 검색조건에 해당하는 자료를 빨리 찾기 위해도 필요하고,
- 조인조건에 해당하는 자료를 빨리 찾기 위해도 필요하죠.
- A 테이블의 경우 검색용 인덱스는 필요하지만 조인용 인덱스는 불필요하죠
- D 테이블의 경우 조인용 인덱스 APPLE 이 필요하겠네요.
2. 인덱스가 유리한 경우
- 많은 자료 중에 극히 일부 자료를 검색할 때 유리합니다.
- 그 반대의 경우라면 오히려 불리합니다.
- 힌트를 안주면 유리한 쪽을 선택합니다. (풀스캔 선택)
- 힌트를 주면 억지로 인덱스를 타긴 하지만 더 불리해 지는 거죠.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입