본문 바로가기

개발중/sql

[MySQL] EXPLAIN (실행계획) 에 나오는 Extra 분석하기

728x90
반응형

EXPLAIN의 Extra ?

MySQL의 EXPLAIN은 SQL 쿼리의 실행 계획을 분석하고 최적화하는 데 도움이 되는 도구입니다. 

EXPLAIN의 결과 중 Extra 열에는 실행 계획에 대한 추가 정보가 표시됩니다. 

 

아래는 일반적으로 Extra 열에 나올 수 있는 값들과 그 의미입니다.

 

Using index

쿼리가 인덱스를 사용하여 필요한 데이터를 가져올 수 있음을 나타냅니다. 

테이블의 행을 읽지 않고도 인덱스만으로 결과를 얻을 수 있는 상황입니다. 이는 효율적인 실행 방식입니다.

Using where

WHERE 절의 조건을 사용하여 행을 필터링하는 작업이 필요함을 나타냅니다. 

이는 행을 읽은 후에 추가적으로 필터링 작업이 필요하다는 것을 의미합니다.

Using temporary

쿼리 실행을 위해 임시 테이블이 생성되어야 함을 나타냅니다. 

보통 GROUP BY나 ORDER BY 절이 포함된 쿼리에서 발생할 수 있습니다. 

이는 일반적으로 성능에 부정적인 영향을 줍니다.

Using filesort

결과를 정렬하기 위해 외부 정렬 방식이 사용되어야 함을 나타냅니다.

이는 쿼리의 결과가 인덱스 순서와 일치하지 않아 추가적인 정렬 작업이 필요한 경우 발생합니다.

이 작업은 비용이 높을 수 있으므로 성능에 부정적인 영향을 줄 수 있습니다.

Using join buffer

조인 작업을 수행할 때 조인 버퍼를 사용하고 있음을 나타냅니다.

조인 버퍼는 빠른 조인 처리를 위해 사용되지만, 이 방식은 메모리 사용량이 높을 수 있습니다.

Range checked for each record (index map: N)

쿼리의 각 행에 대해 인덱스를 사용하여 범위를 확인해야 함을 나타냅니다.

이는 쿼리 최적화에서 최선의 인덱스를 선택할 수 없는 경우 발생하며, 일반적으로 성능에 부정적인 영향을 줍니다.

Select tables optimized away

MySQL 최적화 프로세스에서 불필요한 테이블 액세스가 제거되었음을 나타냅니다.

이 경우, 쿼리 결과가 즉시 반환됩니다.

Impossible WHERE noticed after reading const tables

상수 테이블을 읽은 후 WHERE 조건에 의해 결과가 빈 집합이 될 것

728x90
반응형