본문 바로가기
CODE/CodeKnowledge

[SQL] 대용량 데이터 베이스 관리 : JOIN -1

by 솔리닉__ 2023. 8. 29.
반응형

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

댓글