EXPLAIN
사용하여 MySQL에서 SQL 쿼리 실행을 분석하려면 SQL 쿼리에 대한 EXPLAIN
키워드를 선불로 만듭니다. 이 명령은 MySQL이 쿼리를 실행하는 방법에 대한 자세한 정보를 제공하여 테이블에 액세스하고 결합 된 방법 및 행이 필터링되는 방법을 보여줍니다. 다음은 사용 방법에 대한 단계별 안내서입니다.
EXPLAIN
: 쿼리 전에 EXPLAIN
추가하십시오. 예를 들어, 쿼리가 SELECT * FROM users WHERE age > 18
EXPLAIN SELECT * FROM users WHERE age > 18
실행하게됩니다.EXPLAIN
명령을 실행하거나 phpmyadmin 또는 mySQL 워크 벤치와 같은 도구를 실행하십시오. 출력은 표 형식이됩니다. 출력 분석 : EXPLAIN
출력에는 쿼리 실행에 대한 통찰력을 제공하는 여러 열이 포함되어 있습니다.
id
: 더 큰 문의 쿼리 식별자.select_type
: SELECT
작업 유형입니다.table
: 테이블 이름.type
: 테이블 액세스 방법을 나타내는 결합 유형.possible_keys
: mySQL이 사용할 수있는 색인.key
: MySQL에서 사용하는 실제 색인.key_len
: 사용 된 색인의 길이.ref
: 어떤 열 또는 상수가 인덱스와 비교됩니다.rows
: 예상 행의 행 수 MySQL은 쿼리를 실행하려면 검사해야합니다.filtered
: 조건에 의해 필터링 된 행의 백분율.Extra
: MySQL이 쿼리를 해결하는 방법에 대한 추가 정보.이러한 구성 요소를 분석하면 쿼리의 실행 계획을 더 잘 이해하고 개선 영역을 식별 할 수 있습니다.
EXPLAIN
출력을 사용하여 SQL 쿼리를 최적화 할 때는 다음과 같은 주요 메트릭을 고려해야합니다.
system
, const
, eq_ref
, ref
, range
, index
및 ALL
입니다. 이 목록의 앞부분에서 나타나는 방법을 목표로해야합니다.NULL
) 인덱스를 추가하면 성능이 향상 될 수 있다는 신호입니다.key
열에 사용되지 않는 잠재적 인덱스가 표시되면 쿼리 또는 색인 정의를 조정해야 할 수도 있습니다.Using filesort
또는 Using temporary
과 같은 값을 찾으십시오. 이는 성능 병목 현상을 나타낼 수 있습니다. 당신은 가능한 경우 이것들을 피하고 싶습니다.이러한 메트릭에 중점을두면 최적화가 필요한 쿼리 영역을 정확히 찾아 낼 수 있습니다.
EXPLAIN
MySQL 쿼리에서 다음과 같은 방법으로 성능 문제를 식별하고 해결하는 데 강력한 도구가 될 수 있습니다.
EXPLAIN
합니다. key
열에 NULL
표시하고 possible_keys
몇 가지 옵션을 나열하는 경우 인덱스를 개선하거나 쿼리를 조정하여 효과적으로 사용해야합니다.type
열에 ALL
표시되면 쿼리가 전체 테이블 스캔을 수행한다는 의미입니다. 이를 개선하기 위해 쿼리를 수정하거나 적절한 색인을 추가해야합니다.type
열은 또한 사용 된 조인 유형을 나타냅니다. 덜 효율적인 결합 유형은 인덱스 또는 쿼리 구조를 조정하여보다 효율적인 유형으로 대체 할 수 있습니다.Extra
열에 Using filesort
하거나 Using temporary
경우 성능 병목 현상을 나타냅니다. 인덱스를 추가하거나 수정하여 종종 제거 할 수 있습니다.rows
열은 MySQL이 검사 할 행의 수에 대한 추정치를 제공합니다. 이 숫자가 높으면 스캔 한 행 수를 줄이기 위해 쿼리를 최적화해야 할 수도 있습니다. EXPLAIN
출력을 기반으로 이러한 문제를 해결함으로써 쿼리의 성능을 크게 향상시킬 수 있습니다.
EXPLAIN
결과를 기반으로 SQL 쿼리에 대한 다음과 같은 특정 개선 사항을 구현할 수 있습니다.
key
열에 NULL
표시되면 클로즈 WHERE
, JOIN
또는 ORDER BY
에 사용 된 열에 인덱스를 추가하는 것이 좋습니다. possible_keys
_keys에 사용되지 않은 인덱스가 나열되면 쿼리가 이러한 인덱스를 효과적으로 사용하도록 구성되어 있는지 확인하십시오.type
열에 효율적인 결합 유형이 덜 표시되면 쿼리를 재구성하여보다 효율적인 조인 유형을 사용하도록 구조하십시오. 조인 열에 인덱스를 추가하면 종종 결합 유형을 ALL
또는 range
에서 eq_ref
또는 ref
로 향상시키는 데 도움이 될 수 있습니다.Extra
열에 Using filesort
하거나 Using temporary
경우 이러한 작업을 피하기 위해 쿼리를 최적화하는 방법을 찾으십시오. 예를 들어, 열에서 정렬하는 경우 해당 열의 인덱스를 추가하면 Using filesort
제거 할 수 있습니다.rows
에 줄에 많은 수가 표시되면 쿼리의 범위를 좁히는 것을 고려하십시오. 여기에는 조건이 WHERE
보다 구체적으로 사용하거나 쿼리를 재구성하여 인덱스를보다 효과적으로 사용하는 것이 포함될 수 있습니다.EXPLAIN
출력에 비효율적 인 하위 쿼리가 포함되어 있으면 조인으로 다시 작성하거나 임시 테이블을 사용하여 성능 향상을 고려하십시오. 이러한 구체적인 개선 사항을 적용하면 EXPLAIN
명령의 통찰력에 따라 SQL 쿼리의 효율성을 향상시킬 수 있습니다.
위 내용은 MySQL에서 SQL 쿼리 실행을 분석하기 위해 설명을 어떻게 사용합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!