고양이 여름이의 지식채널

MySQL 쿼리 explain 설명 본문

Programming/DBMS

MySQL 쿼리 explain 설명

썸머캣 2023. 2. 16. 00:40

'EXPLAIN' 키워드는 MySQL 쿼리의 실행 계획을 분석할 수 있는 강력한 도구입니다. 쿼리 실행 계획을 검토하여 병목 현상이나 성능 문제를 식별하고 쿼리를 최적화하는 단계를 수행할 수 있습니다.


 

기본 사용법

EXPLAIN SELECT * FROM orders WHERE customer_id = 123;

쿼리 앞부분에 explain 명령어를 포함시켜 실행시키면 MySQL이 쿼리를 실행하는 방법에 대한 정보를 제공하는 테이블을 출력합니다.

 

Output Columns

  • id : 실행 계획 내의 각 쿼리 블록에 대한 고유 식별자입니다.
  • select_type : 수행 중인 SELECT 작업 유형 (예: SIMPLE, Subquery, UNION)
  • table : 액세스하거나 조인하는 테이블의 이름입니다.
  • type : 사용 중인 조인 유형(예: ALL, INDEX, RANGE, REF, SYSTEM).
  • possible_keys : 쿼리를 최적화하는 데 잠재적으로 사용할 수 있는 인덱스 목록입니다.
  • key : MySQL이 쿼리에 사용하도록 선택한 인덱스입니다.
  • key_len : 인덱스의 길이입니다.
  • ref : key와 비교되는 필드를 나타냅니다.
  • rows : MySQL에서 쿼리를 실행하기 위해 검사해야 하는 예상 행 수입니다.
  • Extra : 쿼리 실행 방법(예: 파일 정렬 또는 임시 테이블 사용 여부)에 대한 추가 정보입니다.

출처. navicat

 

반응형

 

Extra 실행정보

using temporary MySQL이 쿼리를 실행하기 위해 임시 테이블을 만들어야 함을 나타냅니다. 임시 테이블은 메모리 사용량과 디스크 I/O 측면에서 부담 될 수 있으므로 이를 사용하는 쿼리는 그렇지 않은 쿼리보다 느릴 수 있습니다.
MySQL이 임시 테이블을 사용해야 하는 일반적인 이유 중 하나는 대규모 결과 집합에서 GROUP BY 또는 DISTINCT 연산을 수행할 때입니다. 이걸 고려해서 최적화를 해야합니다.

 

using filesort MySQL이 쿼리를 실행하기 위해 filesort 작업을 수행해야 함을 나타냅니다. 파일 정렬 속도가 느리고 리소스를 많이 사용하므로 파일 정렬을 사용하는 쿼리 속도가 느릴 수 있습니다.
파일 정렬을 수행할 때 MySQL은 데이터를 디스크에 쓴 다음 정렬된 순서로 다시 읽습니다.(2번한다고 보면됨)

 

using where 은 MySQL이 WHERE 절을 사용하여 쿼리에서 반환되는 행을 필터링하고 있음을 나타냅니다. 이것은 대부분의 쿼리에서 정상적인 부분이며, 반드시 성능 문제를 나타내는 것은 아닙니다.
그러나 WHERE 절이 최적화되지 않으면 쿼리 성능이 저하될 수 있습니다.

 

using index 는 MySQL이 인덱스를 사용하여 쿼리를 수행하고 있음을 나타냅니다. 인덱스를 사용하면 쿼리 성능을 크게 향상시킬 수 있으므로 일반적으로 이 방법이 좋습니다. 

그러나 모든 인덱스가 동일하게 생성되는 것은 아닙니다. MySQL이 비선택적 인덱스를 사용하는 경우 결과 집합을 반환하기 위해 테이블에서 많은 행을 읽어야 할 수 있습니다. 이는 단순히 전체 테이블 스캔을 수행하는 것보다 느릴 수 있습니다.

 

 

 

쿼리를 최적화하는데 사용할 수 몇 가지 팁

  • 많은 행을 scan 하는 쿼리를 찾습니다. (rows) 쿼리 행 열이 많으면 쿼리가 비효율적이며 추가 인덱싱 또는 기타 최적화를 통해 개선해야합니다.
  • 많은 수의 임시 테이블 또는 파일 정렬 작업(sort) 을 사용하는 쿼리를 찾습니다. 이는 비효율적인 정렬 또는 그룹화의 지표가 될 수 있습니다.
  • 인덱스를 사용하지 않는 쿼리를 찾습니다. 키 열(key)이 "NULL"이면 쿼리가 인덱스를 사용하지 않고 있으며 적절한 인덱스를 추가하여 최적화할 수 있습니다.

 


 

 

 

[Linux] 리눅스 권한과 chmod 옵션 예제

 

[Linux] 리눅스 권한과 chmod 옵션 예제

리눅스는 사용자와 프로세스에 다양한 수준의 권한을 제공하는 다중 사용자 운영 체제입니다. 권한 변경은 chmod 라는 명령어로 설정이 가능합니다. chmod 는 파일과 디렉터리의 권한을 변경하는

summer-cat93.tistory.com

 

728x90
반응형
Comments