반응형

- 2.1 조인효율 향상 원리
- 인덱스, 클러스터등을 사용 (옵티마이징 펙터 지정)
- 가. 조인 순서
- 조인 종류 : Nested Loop와 Sort Merge가 있음
- 순서의 영향을 받는 것은 Nested Loop
- 범위가 좁은 테이블부터 연결하는 것이 유리하다
- 이런 경우는 쉽게 찾을 수 있는 것은 아님
- Nested Loop 조인
- 가장 먼저 수행되는 집합의 처리범위가 전체 양을 결정 ← 가장 작은 양의 테이블을 발견할 것
- 나. 조인 성공률
- 세 개 이상의 집합에 대한 조인 효율은 조인 성공률이 낮은 집합부터 조인을 먼저
- 첫 번째 엑세스될 테이블이 매우 중요하다
- 결론은 row의 수
- 다. 연결고리 (어떤 고리로 연결)
- 연결되는 컬럼의 인텍스 or 클러스터의 유뮤가 중요
- (1) 연결고리 정상
- 근데 1:M으로 연결하는 게 유리할 거 같으나, 실제로 연결 작업이 랜덤 엑세스이므로 발생되는 전체 랜덤 액세스의 총 횟수는 모두 같다
- 연결고리가 정상이면 수행속도를 좌지우지하는 요소가 아님(어…그니까 설계가 잘 되어있어서 그렇다는 말인가?)
- 먼저 처리범위를 줄여줄 테이블을 우선 처리할 것 (범위 좁은 것)
- 옵티마이저 모드에 따라 달라질 수 있지만 (요즘 기준으로는 그냥 비용 모드)
- (2) 한쪽 연결고리 이상
- 인덱스 혹은 클러스터가 없는 경우
- 인덱스가 없기 때문에 전체를 스캔해야 하는 무시무시한 일이 발생함
- 연결고리가 없는 쪽을 옵티마이저가 먼저 살핌
- 가능하면 연결고리 이상은 없도록 하는 게 좋음 (설계부터 이따구로 하지마라)
- (3) 양쪽 연결고리가 모두 이상한 경우
반응형
'CODE > CodeKnowledge' 카테고리의 다른 글
Oracle 설치 1 (0) | 2023.10.02 |
---|---|
웹보안 공격 유형 소개: SQL Injection, XSS, CSRF, Command Injection (0) | 2023.09.28 |
[SQL] 인덱스 분포도가 중요한 이유 (0) | 2023.07.29 |
[SQL] BULK INSERT (mysql과 oracle 차이점) (0) | 2023.07.24 |
젠킨스란 무엇일까? (feat.수동배포 차이점 ) (0) | 2023.07.23 |
댓글