mysql 쿼리 최적화 설명 : A Deep Dive
MySQL 쿼리를 실행할 때 쿼리 최적화는 실행 계획을 공반화합니다. 이 계획을 검사하려면 명령을 사용하십시오. 는 느린 쿼리를 이해하고 최적화하는 데 매우 중요하지만 많은 개발자가이를 활용하지 않습니다. 이 기사는 스키마 및 쿼리 최적화에서 의 출력과 그 응용 프로그램을 살펴 봅니다.
EXPLAIN
키 테이크 아웃 : EXPLAIN
EXPLAIN
레버리지 Query 실행 계획을 분석하고 비효율적 인 비효율을 향상시키고 성능을 향상시킵니다.
decipher 의 출력 열 (예 : , , , , ) 쿼리 처리를 이해하고 개선을위한 영역을 식별하려면
.
는 또는
조항의 열을 기반으로 테이블에 인덱스를 전략적으로 추가하여 행 스캔을 크게 줄이고 속도를 높이고로드 시간을 최소화합니다.
특히 복잡한 최적화 작업을 위해 쿼리 변환 및 실행에 대한 자세한 통찰력을 위해 및 를 고용하십시오.
.
이해 의 출력 -
간단히 EXPLAIN
샘플 출력은 다음과 같을 수 있습니다
-
이 간결한 출력은 정보가 풍부합니다. 주요 열은 다음과 같습니다
: 쿼리에서 각 에 대한 순차 식별자 (중첩 하위 쿼리와 관련이 있음).
: 는 하위 쿼리 또는 가없는 간단한 쿼리를 나타냅니다
: 행에 의해 참조 된 테이블
: MySQL이 테이블에 합류하는 방법. 누락 된 인덱스 또는 쿼리 재 작성 영역을 식별하는 데 중요합니다. 값은 고효율 (id
, SELECT
,
)에서 비효율적 인 (- , 전체 테이블 스캔을 나타냅니다)까지 다양합니다.
: MySQL에서 잠재적으로 사용할 수있는 키. 는 관련 인덱스를 제안하지 않습니다
: 실제 색인이 사용됩니다. 최적화 선택으로 인해
select_type
와 다를 수 있습니다
: 선택한 색인의 길이
SELECT
: SIMPLE
열의 인덱스와 비교하여 열 또는 상수.
UNION
: 검사 된 행 수. 높은 가치는 특히
s 및 하위 쿼리와 함께 잠재적 최적화 요구를 가리 킵니다.
: 추가 정보 (예 : "임시 사용", "Filesort 사용"). 자세한 해석은 MySQL 문서를 참조하십시오
-
는 자세한 내용을 제공합니다. 나중에
table
를 사용하여 Optimizer에서 수행 한 쿼리 변환을 볼 수 있습니다 : .
-
type
로 성능 문제 해결 성능
성능이 저조한 쿼리 최적화를 설명하자. 인덱스가없는 전자 상거래 데이터베이스 (GitHub에서 사용 가능한 스키마)를 고려하십시오. 제대로 쓰여진 쿼리는 다음과 같이 보일 수 있습니다
system
const
출력은 "모든"결합 유형, 및 eq_ref
의 ALL
및 매우 높은
값을 보여 주며 각 테이블에 대한 전체 테이블 스캔을 나타냅니다. 이것은 매우 비효율적입니다. -
기본 키 및 인덱스 추가 (예 :
possible_keys
조항에 사용되는 열에서)는 성능을 크게 향상시킵니다. 인덱스를 추가 한 후 를 다시 주행하면 또 다른 예제는 두 개의 테이블의 NULL
가 포함되며, 각각은
: 와 결합됩니다.
-
적절한 인덱스가 없으면
key
에는 전체 테이블 스캔이 표시됩니다. 인덱스를 추가하고 전략적으로 possible_keys
하위 Queries 내에
조건을 배치하면 스캔 한 행의 수가 크게 줄어들 수 있습니다.
요약 -
key_len
는 MySQL 쿼리 최적화에서 동맹국입니다. 출력을 분석함으로써 성능 병목 현상을 식별하고 주소화하여보다 효율적이고 빠른 쿼리를 초래할 수 있습니다. 단순히 인덱스를 추가하는 것만으로 항상 충분하지는 않습니다. 쿼리 구조는 또한 중요한 역할을합니다. EXPLAIN
를 정기적으로 사용하는 것은 데이터베이스 건강, 특히 동적 응용 프로그램에서 핵심입니다.
위 내용은 설명을 사용하여 더 나은 MySQL 쿼리를 작성합니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!