• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 1. 최적화 개요
    2. SQL문 최적화
    3. 최적화 및 인덱스
    4. 데이터베이스 구조의 최적화
    5. InnoDB 테이블의 최적화
    6. MyISAM 테이블의 최적화
    7. MEMORY 테이블 최적화
    8. 쿼리 실행 계획의 이해
    1. EXPLAIN으로 쿼리 최적화
    2. EXPLAIN 출력 포맷
    3. EXPLAIN EXTENDED 출력 포맷
    4. 쿼리 성능 추정
    5. 쿼리 최적화 제어
    9. 버퍼링과 캐시
    10. 잠금 작업의 최적화
    11. MySQL 서버의 최적화
    12. 성능 측정
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

8.8.3 EXPLAIN EXTENDED 출력 포맷

EXPLAIN 을 EXTENDED 키워드를 함께 사용하면 출력에 다른 경우 표시되지 filtered 컬럼이 포함됩니다. 이 컬럼은 테이블 조건에 의해 필터링 된 테이블 행의 추정 비율을 나타냅니다. 또한 문은 EXPLAIN 문에 계속 SHOW WARNINGS 명령문을 발행하여 표시 할 수있는 추가 정보를 생성합니다. SHOW WARNINGS 출력 Message 값은 최적화가 SELECT 문에서 테이블 및 컬럼 이름을 어떻게 수정하거나 재 작성 및 최적화 규칙의 적용 후에 SELECT 가 어떻게 보이는지, 그리고 경우에 따라 최적화 프로세스에 대한 다른 메모가 표시됩니다.

이것은 확장 된 출력의 예입니다.

 mysql> EXPLAIN EXTENDED
     -> SELECT t1.a, t1.a IN (SELECT t2.a FROM t2) FROM t1\G
 *************************** 1. row ******************** *******
            id : 1
   select_type : PRIMARY
         table : t1
          type : index
 possible_keys : NULL
           key : PRIMARY
       key_len : 4
           ref : NULL
          rows : 4
      filtered : 100.00
         Extra : Using index
 *************************** 2. row ******************** *******
            id : 2
   select_type : SUBQUERY
         table : t2
          type : index
 possible_keys : a
           key : a
       key_len : 5
           ref : NULL
          rows : 3
      filtered : 100.00
         Extra : Using index
 2 rows in set, 1 warning (0.00 sec)

 mysql> SHOW WARNINGS\G
 *************************** 1. row ******************** *******
   Level : Note
    Code : 1003
 Message : / * select # 1 * / select`test`.`t1`.`a` AS`a`,
          <in_optimizer> (`test`.`t1`.`a``test`.`t1`.`a` in
          (<materialize> (/ * select # 2 * / select`test`.`t2`.`a`
          from`test`.`t2` where 1 having 1)
          <pri​​mary_index_lookup> (`test`.`t1`.`a` in
          <temporary table> on <auto_key>
          where ((`test`.`t1`.`a` =`materialized-subquery`.`a`))))) AS`t1.a
          IN (SELECT t2.a FROM t2)`from`test`.`t1`
 1 row in set (0.00 sec)

MySQL 5.6.3 현재 EXPLAIN EXTENDED 는 SELECT , DELETE , INSERT , REPLACE 및 UPDATE 문에서 사용할 수 있습니다. 그러나 다음 SHOW WARNINGS 문은 SELECT 문에 대해서만 비어 있지 않은 결과를 표시합니다. MySQL 5.6.3 이전에서는 EXPLAIN EXTENDED 는 SELECT 문에서만 사용할 수 있습니다.

SHOW WARNINGS 에 의해 표시되는 문은 쿼리 재 작성과 최적화 작업에 대한 정보를 제공하는 특별한 마커가 포함될 수 있기 때문에 문은 반드시 유효한 SQL 대신 실행되는 것을 목적으로하고 있습니다 하지 않습니다. 출력은 최적화에 의해 채택 된 작업에 대한 추가 SQL이 아닌 설명의 메모를 제공하는 Message 값이있는 행이 포함될 수 있습니다.

다음 목록은 SHOW WARNINGS 에 의해 표시되고 EXTENDED 출력에 표시 될 수있는 특별한 표식을 설명합니다.

  • <auto_key>

    임시 테이블에 자동으로 생성되는 키.

  • <cache>( expr )

    식 (스칼라 서브 쿼리 등)가 한 번 실행되어 나중에 사용하기 위해 결과 값이 메모리에 저장됩니다. 여러 값으로 구성된 결과의 경우, 임시 테이블이 작성 될 수 있으며, 대신 <temporary table> 가 표시됩니다.

  • <exists>( query fragment )

    서브 쿼리 술어는 EXISTS 술어로 변환 된 하위 쿼리는 EXISTS 술어와 함께 사용할 수 있도록 변환됩니다.

  • <in_optimizer>( query fragment )

    이것은 사용자에게는 의미가없는 내부 최적화 개체입니다.

  • <index_lookup>( query fragment )

    대상 행을 찾기 위해 인덱스 조회를 사용하여 쿼리 조각이 처리됩니다.

  • <if>( condition , expr1 , expr2 )

    조건이 true이면 expr1 , 그렇지 않은 경우는 expr2 평가됩니다.

  • <is_not_null_test>( expr )

    식이 NULL 로 평가되지 않는 것을 확인하기위한 테스트.

  • <materialize>( query fragment )

    서브 쿼리의 구체화가 사용됩니다.

  • `materialized-subquery`. col_name , `materialized subselect`. col_name

    서브 쿼리의 평가 결과를 유지하기 위해 구체화 된 내부 임시 테이블의 컬럼 col_name 참조.

  • <primary_index_lookup>( query fragment )

    대상 행을 찾기 위해 기본 키 조회를 사용하여 쿼리 조각이 처리됩니다.

  • <ref_null_helper>( expr )

    이것은 사용자에게는 의미가없는 내부 최적화 개체입니다.

  • /* select# N */ select_stmt

    SELECT 는 EXTENDED EXPLAIN 이외의 출력에서 N 의 id 값을 가진 행에 연결됩니다.

  • outer_tables semi join ( inner_tables )

    준 병합 작업. inner_tables 는 꺼내지지 않았던 테이블을 나타냅니다. 섹션 8.2.1.18.1 '준 조인 변환에 의한 서브 쿼리의 최적화 " 를 참조하십시오.

  • <temporary table>

    이것은 중간 결과를 캐시하기 위해 작성되는 내부 임시 테​​이블을 나타냅니다.

일부 테이블이 const 또는 system 형인 경우,이 테이블에서 컬럼을 포함 식은 최적화에 의해 조기에 평가되어 표시되는 문에 포함되지 않습니다. 그러나 FORMAT=JSON 에서는 일부 const 테이블 액세스가 상수 값을 사용하는 ref 액세스로 표시됩니다.

서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved