10장 : 실행 계획

문제

  1. 문제 1 (객관식) : 통계 정보 - 코스트 모델

    • 🥭 전체 쿼리의 비용을 계산하는 데 필요한 단위 작업들의 비용을 코스트 모델(Cost Model)이라고 한다. 다음 중 MySQL 서버가 쿼리를 처리하는데 필요로 하는 작업이 아닌 것을 고르시오.

      1. 디스크 및 메모리(InnoDB 버퍼 풀)로부터 데이터 페이지 읽기

      2. 인덱스 키 비교

      3. 레코드 평가

      4. 디스크 및 메모리 임시 테이블 작업

      5. 통계 정보 수집

  2. 문제 2 (객관식) : 실행 계획 확인 - 실행 계획 출력

    • 🍑 다음 쿼리의 실행 계획을 TREE 포맷으로 출력하시오

    SELECT *
    FROM employees e 
    	INNER JOIN salaries s ON s.emp_no=e.emp_no
    WHERE first_name='ABC';
  3. 문제 3 (주관식) : 실행 계획 분석-type 칼럼

    • 🍓 쿼리의 실행 계획에서 type 이후의 칼럼은 MySQL 서버가 각 테이블의 레코드를 어떤 방식으로 읽었는지를 나타낸다. 일반적으로 쿼리를 튜닝할 때 인덱스를 효율적으로 사용하는지 확인하는 것이 중요하므로 실행 계획에서 type 칼럼은 반드시 체크해야 할 중요한 정보다.

      아래 type과 type에 해당하는 설명을 올바르게 연결하시오.

      Type

      1. system
      2. unique_subquery
      3. index_subquery
      4. range
      5. index
      6. all

      Description

      a. 인덱스를 처음부터 끝까지 읽는 인덱스 풀 스캔을 의미
      b. 풀 테이블 스캔
      c. 레코드가 1건만 존재하는 테이블 또는 한 건도 존재하지 않는 테이블을 참조하는 형태의 접근 방법
      d. 서브쿼리 결과의 중복된 값을 인덱스를 이요해 제거할 수 있을 때
      e. WHERE 조건절에서 사용될 수 있는 IN(subquery) 형태의 쿼리를 위한 접근 방법
      f. 인덱스 레인지 스캔 형태의 접근 방법 

정답

  • Q1

    e : 이후 통계가 나오는거. 쿼리를 기반으로 그 이후에 통계 정보

  • Q2

    • FORMAT=TREE 라고 표시해주면 된다.

    EXPLAIN FORMAT=TREE
    SELECT *
    FROM employees e 
    	INNER JOIN salaries s ON s.emp_no=e.emp_no
    WHERE first_name='ABC';
  • Q3

    Type

    1. system
    2. unique_subquery
    3. index_subquery
    4. range
    5. index
    6. all

    Description

    a. 인덱스를 처음부터 끝까지 읽는 인덱스 풀 스캔을 의미
    b. 풀 테이블 스캔
    c. 레코드가 1건만 존재하는 테이블 또는 한 건도 존재하지 않는 테이블을 참조하는 형태의 접근 방법
    d. 서브쿼리 결과의 중복된 값을 인덱스를 이요해 제거할 수 있을 때
    e. WHERE 조건절에서 사용될 수 있는 IN(subquery) 형태의 쿼리를 위한 접근 방법
    f. 인덱스 레인지 스캔 형태의 접근 방법 
    • 1 - c

    • 2 - e

    • 3 - d

    • 4 - f

    • 5 - a

    • 6 - b

Last updated