데이터 베이스 MySQL 튜토리얼 MySQL에서의 explain 사용법 요약(상세)

MySQL에서의 explain 사용법 요약(상세)

Jan 07, 2019 am 10:37 AM
mysql


이 글은 MySQL에서의 explain 사용법을 요약(자세히)한 것입니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

실행 계획(쿼리 실행 계획)

Syntax

explain select * from table
로그인 후 복사

explain

expain의 열에는 10개의 열이 있으며,
id, select_type, table, type, partitions, available_keys, key, key_len, ref,rows, 추가로, 이러한 필드의 모양에 대한 가능한 설명은 다음과 같습니다.

1. ID

SQL 실행 순서 식별, SQL은 큰 것부터 작은 것까지 실행됩니다.

1. 실행순서 위에서 아래로

2. 서브쿼리인 경우 ID값이 클수록 우선순위가 높아지며, 일찍 실행됩니다

3. ID는 동일하므로 위에서 아래로 그룹으로 간주할 수 있습니다. 모든 그룹에서 순차적으로 실행되며, ID 값이 클수록 우선 순위가 높아지고 더 일찍 실행됩니다

2. 쿼리의 각 SELECT 절 유형을 나타냅니다.

1 SIMPLE: 단순 SELECT, UNION 또는 하위 쿼리는 적용할 수 없습니다.

2. 기본: 가장 바깥쪽 선택.

3. UNION: 두 번째 레이어에서는 SELECT 다음에 UNION이 사용됩니다.

4. DEPENDENT UNION: UNION 문의 두 번째 SELECT는 외부 하위 쿼리에 따라 다릅니다.

5. UNION 결과: UNION의 결과입니다.

6. SUBQUERY: 하위 쿼리의 첫 번째 SELECT입니다.

7. 종속 하위 쿼리: 하위 쿼리의 첫 번째 SELECT는 외부 쿼리에 따라 다릅니다.

8

11. UNCACHEABLE UNION: UNION은 캐시할 수 없는 하위 쿼리의 두 번째 또는 마지막 선택에 속합니다.

3.table

출력 행에서 참조하는 테이블의 이름입니다. 이는 다음 값 중 하나일 수도 있습니다.

M

,
  • N

    ,...>: 이 행은 id 값 M과 id를 나타냅니다. 값은 N의 합집합입니다. N

    >: 행은 해당 행과 함께 파생된 테이블 결과 ID에 사용된 N 값을 참조합니다. 예를 들어 파생 테이블은 FROM 절의 하위 쿼리
  • N

    >에서 나올 수 있습니다. 행은 ID 값이

  • 4인 행에 대한 구체화된 하위 쿼리의 결과를 나타냅니다.
  • 은 MySQL이 테이블에서 필요한 행을 찾는 방법("액세스 유형"이라고도 함)을 나타냅니다. 일반적으로 사용되는 유형은 다음과 같습니다: NULL, system, const, eq_ref, ref, range, index, ALL(왼쪽에서 오른쪽으로, 성능이 가장 나쁜 것부터 가장 좋은 것 순) 다음 목록에서는 가장 좋은 유형부터 가장 나쁜 유형까지의 연결 유형을 설명합니다.

  • NULL

    MySQL은 최적화 프로세스 중에 명령문을 분해하며 실행 중에 테이블이나 인덱스에 액세스할 필요도 없습니다. 예를 들어 인덱스 열에서 최소값을 선택하는 것은 별도의 인덱스 조회를 통해 완료할 수 있습니다.

    system

    이 테이블에는 행이 하나만 있습니다(예: 시스템 테이블). 이것은 const 조인 유형

    const의 특별한 경우입니다. 테이블에는 최대 하나의 일치하는 행이 있으며 쿼리 시작 부분에서 읽습니다. 행이 하나뿐이므로 나머지 최적화 프로그램은 이 행에 있는 열의 값을 상수로 처리할 수 있습니다. const 테이블은 한 번만 읽기 때문에 매우 빠릅니다.

    SELECT * FROM tbl_name WHERE primary_key=1;
    SELECT * FROM tbl_name WHERE primary_key_part1=1 AND primary_key_part2=2;
    로그인 후 복사

    eq_ref 이전 테이블의 각 행 조합에 대해 이 테이블에서 한 행을 읽습니다. system 및 const 유형 외에도 이는 최상의 연결 유형입니다. 조인이 인덱스의 모든 부분을 사용하고 인덱스가 PRIMARY KEY 인덱스 또는 UNIQUE NOT NULL 인덱스인 경우에 사용됩니다.

    SELECT * FROM ref_table,other_table
      WHERE ref_table.key_column=other_table.column;
    
    SELECT * FROM ref_table,other_table
        WHERE ref_table.key_column_part1=other_table.column
        AND ref_table.key_column_part2=1;
    로그인 후 복사

    ref 위 표의 연결 일치 조건, 즉 인덱스 열의 값을 찾기 위해 어떤 열이나 상수를 사용하는지 나타냅니다.

    fulltext FULLTEXT 인덱스를 사용하여 연결을 수행합니다.

    ref_or_null

    SELECT * FROM ref_table WHERE key_column IS NULL;
    로그인 후 복사

    index_merge

    인덱스 병합 액세스 방법은 범위 스캔을 사용하여 여러 행을 검색하고 그 결과를 하나로 병합합니다. 이 액세스 방법은 단일 테이블의 인덱스 스캔만 결합하고 여러 테이블을 스캔하지 않습니다. 병합은 기본 스캔의 Union, Cross 또는 Cross-Union을 생성할 수 있습니다.

    SELECT * FROM tbl_name WHERE key1 = 10 OR key2 = 20;
    
    SELECT * FROM tbl_name
    WHERE (key1 = 10 OR key2 = 20) AND non_key = 30;
    
    SELECT * FROM t1, t2
    WHERE (t1.key1 IN (1,2) OR t1.key2 LIKE 'value%')
    AND t2.key1 = t1.some_col;
    
    SELECT * FROM t1, t2
    WHERE t1.key1 = 1
    AND (t2.key1 = t1.some_col OR t2.key2 = t1.some_col2);
    로그인 후 복사

    unique_subquery

    이 유형은 일부 IN 하위 쿼리를 다음 형식의 eq_ref로 대체합니다.

    value IN (SELECT primary_key FROM single_table WHERE some_expr)
    로그인 후 복사

    index_subquery 이 조인 유형은 Unique_subquery와 유사합니다. IN 하위 쿼리를 대체하지만 다음 형식의 하위 쿼리에서 고유하지 않은 인덱스와 함께 작동합니다.

    value IN (SELECT key_column FROM single_table WHERE some_expr)
    로그인 후 복사

    range 인덱스를 사용하여 행을 선택하여 지정된 범위 내의 행만 검색합니다. 출력 행의 키 열은 사용할 인덱스를 나타냅니다. 가장 오랫동안 사용된 키 부분을 포함하는 key_len을 포함합니다. 참조 열 NULL이 이 유형에 적합합니다.
    범위는 키 열을 상수 =, <>, >, >=, <, <=, IS NULL, <=>, BETWEEN, LIKE 또는 IN과 비교할 때 사용할 수 있습니다. () 연산자:

    index
    인덱스 조인 유형은 인덱스 트리를 스캔한다는 점을 제외하면 ALL과 동일합니다. 두 가지 상황이 있습니다:

    1. 인덱스 트리는 인덱스가 쿼리에 대한 포함 인덱스이고 테이블에 필요한 모든 데이터를 충족하는 데 사용될 수 있는 경우에만 스캔됩니다. 이 경우 추가 열에는 인덱스 사용이 표시됩니다. 인덱스 전용 스캔은 일반적으로 테이블 데이터보다 크기가 작은 모든 인덱스보다 빠릅니다.

    2. 인덱스에서 읽기를 사용하여 전체 테이블 스캔을 수행하여 인덱스 순서로 데이터 행을 찾습니다. 추가 열에는 색인 사용이 표시되지 않습니다. MySQL은 쿼리가 단일 인덱스에 속한 열만 사용할 때 이 연결 유형을 사용할 수 있습니다.

    ALL
    이전 테이블의 각 행 조합에 대해 전체 테이블 스캔을 수행합니다. 일반적으로 테이블이 const로 표시되지 않은 첫 번째 테이블이면 좋지 않으며 다른 모든 경우에는 일반적으로 매우 나쁩니다. 일반적으로 이전 테이블의 상수 값 또는 열 값을 기반으로 테이블에서 행 검색을 활성화하는 인덱스를 추가하면 이 문제를 모두 피할 수 있습니다.

    가능한_키 열은 MySQL이 행을 찾기 위해 선택할 수 있는 인덱스를 나타냅니다. 이 테이블은 MySQL이 테이블에서 레코드를 찾는 데 사용할 수 있는 인덱스를 나타냅니다. 쿼리와 관련된 필드에 인덱스가 있으면 해당 인덱스가 나열되지만

    #🎜 🎜# 이 열은 EXPLAIN 출력에 표시된 테이블 순서와 완전히 독립적입니다. 이는 available_keys의 일부 키가 생성된 테이블 순서에 실제로 사용될 수 없음을 의미합니다. 컬럼이 NULL이면 연관된 인덱스가 없습니다. 이 경우 WHERE 절을 확인하여 인덱싱에 적합한 특정 열을 참조하는지 확인하여 쿼리 성능을 향상시킬 수 있습니다. 그렇다면 적절한 인덱스를 생성하고 EXPLAIN Key(index)

    로 쿼리를 다시 확인합니다. 인덱스를 선택하지 않으면 키는 NULL입니다. MySQL이 available_keys 열의 인덱스를 사용하거나 무시하도록 하려면 쿼리에서 FORCE INDEX, USE INDEX 또는 IGNORE INDEX를 사용하십시오.

    7.key_len

    은 쿼리에 사용된 인덱스의 길이를 다음을 통해 계산할 수 있습니다. 이 열(key_len 표시된 값은 사용된 실제 길이가 아닌 인덱스 필드의 가능한 최대 길이입니다. 즉, key_len은 테이블에서 검색되지 않고 테이블 정의에 따라 계산됩니다.) 없음 정확도 손실, 길이가 짧을수록 좋음

    8. ref

    은 위 표의 연결 매칭 조건, 즉 , 인덱스를 찾는 데 사용되는 열 또는 상수

    열의 값 9.row

    은 MySQL이 찾을 위치를 추정함을 나타냅니다. 테이블 통계 및 인덱스 선택을 기반으로 하는 필수 레코드입니다. 읽을 행 수

    10. Extra

    추가 열 EXPLAIN 출력에는 다음이 포함됩니다. 쿼리를 해결하기 위한 MySQL에 대한 추가 정보입니다. 다음 목록에서는 이 열에 가능한 값을 설명합니다. 또한 각 항목은 추가 값을 표시하는 속성을 JSON 형식 출력에 나타냅니다. 그들 중 일부에는 특정 속성이 있습니다. 메시지 속성으로 표시되는 기타 텍스트

    11. partitions (extension)

    쿼리와 일치하는 파티션을 기록합니다. 이 열은 PARTITIONS 키워드를 사용할 때만 표시됩니다. 분할되지 않은 테이블에는 null이 표시됩니다

    MySQL에 대한 자세한 내용은 PHP 중국어 웹사이트의 MySQL 튜토리얼 열을 참조하세요. ! !

    위 내용은 MySQL에서의 explain 사용법 요약(상세)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

MySQL : 쉽게 학습하기위한 간단한 개념 MySQL : 쉽게 학습하기위한 간단한 개념 Apr 10, 2025 am 09:29 AM

MySQL은 오픈 소스 관계형 데이터베이스 관리 시스템입니다. 1) 데이터베이스 및 테이블 작성 : CreateAbase 및 CreateTable 명령을 사용하십시오. 2) 기본 작업 : 삽입, 업데이트, 삭제 및 선택. 3) 고급 운영 : 가입, 하위 쿼리 및 거래 처리. 4) 디버깅 기술 : 확인, 데이터 유형 및 권한을 확인하십시오. 5) 최적화 제안 : 인덱스 사용, 선택을 피하고 거래를 사용하십시오.

phpmyadmin을 여는 방법 phpmyadmin을 여는 방법 Apr 10, 2025 pm 10:51 PM

다음 단계를 통해 phpmyadmin을 열 수 있습니다. 1. 웹 사이트 제어판에 로그인; 2. phpmyadmin 아이콘을 찾고 클릭하십시오. 3. MySQL 자격 증명을 입력하십시오. 4. "로그인"을 클릭하십시오.

MySQL : 세계에서 가장 인기있는 데이터베이스 소개 MySQL : 세계에서 가장 인기있는 데이터베이스 소개 Apr 12, 2025 am 12:18 AM

MySQL은 오픈 소스 관계형 데이터베이스 관리 시스템으로, 주로 데이터를 신속하고 안정적으로 저장하고 검색하는 데 사용됩니다. 작업 원칙에는 클라이언트 요청, 쿼리 해상도, 쿼리 실행 및 반환 결과가 포함됩니다. 사용의 예로는 테이블 작성, 데이터 삽입 및 쿼리 및 조인 작업과 같은 고급 기능이 포함됩니다. 일반적인 오류에는 SQL 구문, 데이터 유형 및 권한이 포함되며 최적화 제안에는 인덱스 사용, 최적화 된 쿼리 및 테이블 분할이 포함됩니다.

MySQL을 사용하는 이유는 무엇입니까? 혜택과 장점 MySQL을 사용하는 이유는 무엇입니까? 혜택과 장점 Apr 12, 2025 am 12:17 AM

MySQL은 성능, 신뢰성, 사용 편의성 및 커뮤니티 지원을 위해 선택됩니다. 1.MYSQL은 효율적인 데이터 저장 및 검색 기능을 제공하여 여러 데이터 유형 및 고급 쿼리 작업을 지원합니다. 2. 고객-서버 아키텍처 및 다중 스토리지 엔진을 채택하여 트랜잭션 및 쿼리 최적화를 지원합니다. 3. 사용하기 쉽고 다양한 운영 체제 및 프로그래밍 언어를 지원합니다. 4. 강력한 지역 사회 지원을 받고 풍부한 자원과 솔루션을 제공합니다.

단일 스레드 레 디스를 사용하는 방법 단일 스레드 레 디스를 사용하는 방법 Apr 10, 2025 pm 07:12 PM

Redis는 단일 스레드 아키텍처를 사용하여 고성능, 단순성 및 일관성을 제공합니다. 동시성을 향상시키기 위해 I/O 멀티플렉싱, 이벤트 루프, 비 블로킹 I/O 및 공유 메모리를 사용하지만 동시성 제한 제한, 단일 고장 지점 및 쓰기 집약적 인 워크로드에 부적합한 제한이 있습니다.

MySQL 및 SQL : 개발자를위한 필수 기술 MySQL 및 SQL : 개발자를위한 필수 기술 Apr 10, 2025 am 09:30 AM

MySQL 및 SQL은 개발자에게 필수적인 기술입니다. 1.MySQL은 오픈 소스 관계형 데이터베이스 관리 시스템이며 SQL은 데이터베이스를 관리하고 작동하는 데 사용되는 표준 언어입니다. 2.MYSQL은 효율적인 데이터 저장 및 검색 기능을 통해 여러 스토리지 엔진을 지원하며 SQL은 간단한 문을 통해 복잡한 데이터 작업을 완료합니다. 3. 사용의 예에는 기본 쿼리 및 조건 별 필터링 및 정렬과 같은 고급 쿼리가 포함됩니다. 4. 일반적인 오류에는 구문 오류 및 성능 문제가 포함되며 SQL 문을 확인하고 설명 명령을 사용하여 최적화 할 수 있습니다. 5. 성능 최적화 기술에는 인덱스 사용, 전체 테이블 스캔 피하기, 조인 작업 최적화 및 코드 가독성 향상이 포함됩니다.

MySQL의 장소 : 데이터베이스 및 프로그래밍 MySQL의 장소 : 데이터베이스 및 프로그래밍 Apr 13, 2025 am 12:18 AM

데이터베이스 및 프로그래밍에서 MySQL의 위치는 매우 중요합니다. 다양한 응용 프로그램 시나리오에서 널리 사용되는 오픈 소스 관계형 데이터베이스 관리 시스템입니다. 1) MySQL은 웹, 모바일 및 엔터프라이즈 레벨 시스템을 지원하는 효율적인 데이터 저장, 조직 및 검색 기능을 제공합니다. 2) 클라이언트 서버 아키텍처를 사용하고 여러 스토리지 엔진 및 인덱스 최적화를 지원합니다. 3) 기본 사용에는 테이블 작성 및 데이터 삽입이 포함되며 고급 사용에는 다중 테이블 조인 및 복잡한 쿼리가 포함됩니다. 4) SQL 구문 오류 및 성능 문제와 같은 자주 묻는 질문은 설명 명령 및 느린 쿼리 로그를 통해 디버깅 할 수 있습니다. 5) 성능 최적화 방법에는 인덱스의 합리적인 사용, 최적화 된 쿼리 및 캐시 사용이 포함됩니다. 모범 사례에는 거래 사용 및 준비된 체계가 포함됩니다

SQL 데이터베이스를 구축하는 방법 SQL 데이터베이스를 구축하는 방법 Apr 09, 2025 pm 04:24 PM

SQL 데이터베이스 구축에는 10 단계가 필요합니다. DBMS 선택; DBMS 설치; 데이터베이스 생성; 테이블 만들기; 데이터 삽입; 데이터 검색; 데이터 업데이트; 데이터 삭제; 사용자 관리; 데이터베이스 백업.

See all articles