본문으로 바로가기

[SQL 튜닝] 실행계획

category Data Analysis/SQL Tuning 2023. 11. 13. 10:07
반응형

실행계획

  1. id
    • 실행 순서 숫자, 같으면 조인
  2. select_type
    1. SIMPLE
      • select구문으로만 작성
    2. PRIMARY
      • 서브쿼리 포함된 혹은 UNION ALL에서 첫번째 SELECT 문
    3. SUBQUERY
      • 독립적 서브쿼리, 스칼라 서브쿼리, WHERE절 중첩 서브쿼리
    4. DERIVED
      • FROM절의 서브쿼리
    5. UNION
      • 첫번째 SELECT 구문 이후의 SELECT 구문
    6. UNION RESULT
      • union all이 아닌 union 구문
    7. DEPENDENT SUBQUERY
      • UNION 형태로 구성된 서브쿼리 (메인테이블의 영향을 받는 경우 = 튜닝대상)
    8. DEPENDENT UNION
      • UNION 형태로 구성된 서브쿼리에서 두번째 쿼리
    9. UNCACHEABLE SUBQUERY
      • 메모리에 상주하여 재활용되어야 할 서브쿼리가 재사용되지 못할때
      • 서브쿼리 안에 사용자 정의 함수나 사용자 변수 포함
      • RAND(), UUID() 함수 사용
    10. MATERIALIZED
      • IN절에서 연결된 서브쿼리가 조인이나 가공 작업을 수행할때
  3. table
    • 테이블명 표시
    • 서브쿼리나 임시 테이블 시 <subquery#> <derived#>로 표현
  4. partitions
    • 대용량 데이터에서 사용
  5. type
    • 데이터 찾는 방식
    • system
      1. 데이터가 없거나 한개만 있는 경우, 성능상 최상의 type
    • const
      1. 조회되는 데이터가 단 1건일 때, 성능상 매우 유리
      2. 고유 인덱스나 기본 키를 사용
    • eq_ref
      1. 조인 수행 시 드리븐 테이블의 데이터에 접근하며 고유 인덱스 또는 기본 키로 단 1건의 데이터를 조회
      2. 조인이 수행될 때 성능상 가장 유리한 경우
    • ref
      1. eq_ref와 유사한 방식, 조인을 수행할 때 드리븐 테이블의 데이터 접근범위가 2개 이상인 경우
    • ref_or_null
      1. ref 유형과 유사하지만 IS NULL 구문에 대해 인덱스를 활용하도록 최적화된 방식
      2. 테이블에서 검색할 NULL 데이터양이 적다면 ref_or_null 방식을 활용했을때 효율적인 SQL 문이 되지만, 검색할 NULL 데이터양이 많다면 SQL 튜닝의 대상이 된다.
    • range
      1. 테이블 내의 연속된 데이터 범위를 조회하는 유형으로 =,<>,>,≥,<,≤,IS NULL,BETWEEN, IN 연산을 통해 범위 스캔을 수행하는 방식
      2. 스캔할 범위가 넓으면 성능 저하의 요인이 될 수 있으므로 SQL 튜닝 검사의 대상이 된다.
    • fulltext
      1. 텍스트 검색을 빠르게 처리하기 위해 전문 인덱스(full text index)를 사용하여 데이터에 접근
    • index_merge
      1. 결합된 인덱스들이 동시에 사용
      2. 전문 인덱스(full text index)는 제외
    • index
      1. 인덱스 풀 스캔
      2. 물리적인 인덱스 block을 처음부터 끝까지 훑는 방식으로, ALL과 유사
      3. 인덱스 테이블이 크기가 작으므로 테이블 풀 스캔 방식보다는 빠름
    • ALL
      1. 테이블을 처음부터 끝까지 읽는 테이블 풀 스캔 방식

References

book : 업무에 바로 쓰는 SQL 튜닝

반응형

'Data Analysis > SQL Tuning' 카테고리의 다른 글

[SQL 레벨업] 2장. SQL 기초  (0) 2023.12.19
[SQL 레벨업] 1장. DBMS 아키텍쳐  (0) 2023.12.13
[SQL 튜닝] 기본적인 튜닝 절차  (0) 2023.11.13
[SQL 튜닝] 기본개념  (0) 2023.11.13