Back-End/DB

Real MySQL 8.0 [실행계획 : Extra 칼럼]

Meluu_ 2025. 9. 3. 14:49

내용이 많아 따로 글을 나눠서 작성한다.

 

Extra 칼럼

쿼리 실행 계획에서 성능에 관련된 중요한 내용이 자주 표시됨

 

const row not found

const 접근 방법으로 테이블을 읽었지만 실제로 해당 테이블에 레코드가 1개도 없다면 표시

Deleting all rows

테이블의 모든 레코드를 삭제하는 기능을 제공하는 경우 (Where 없이 모두 삭제)

8.0부터 삭제되고, where 없이 삭제를 권장하지 않음, Truncate Table 사용

distinct

중복제거, 중복된 값들은 읽지 않고 무시함 

FirstMach(table)

IN(subquery) 형태의 세미 조인 을 EXISTS(subquery) 형태로 튜닝한 것과 비슷하게 실행되며, 서브 쿼리를 조인으로 처리하며, 일치하는 레코드 1건만 찾으면 더이상 해당 테이블을 검색하지 않는다.

Full sacn on Null key

col1 IN (SELECT col2 FROM...) 과 같은 조건을 가진 쿼리에서 자주 발생

col1 값이 NULL 이 된다면 결과적으로 조건은 NULL IN (SELECT col2 FROM...)으로 변경 

 

서브 쿼리가 1건이라도 결과를 가진다면 최종 비교 결과는  NULL

서브 쿼리 결과가 없다면 최종 비교 결과는 FALSE

 

col1 이 NULL 이면 풀 테이블 스캔을 해야만 결과를 알 수 있기에 MySQL 서버가 알려주는 키워드

 

col1 이 Not Null 이면 표시하지 않음

강제로 앞 조건에 col1 IS NOT NULL 을 넣어 풀테이블 스캔을 피할 수 있다.

 

Impossible HAVING

HAVING 절의 조건을 만족하는 레코드가 없을 때 표시

쿼리가 제대로 작성되지 않았을 경우가 대부분이므로 쿼리 점검

 

Impossbile WHERE

WHERE 조건이 항상 FALSE 가 될 수 밖에 없는 경우 표시

LooseScan

세미 조인 최적화 중에서 LooseScan 최적화 전략이 사용될 경우 표시

No matching min/max row

min(), max()와 같은 집합 함수가 있는 쿼리의 조건절에 일치하는 레코드가 없는 경우 표시

함수 결과로는 NULL을 반환함

No matching row in const table

조인에서 const 접근시 일치 레코드가 없다면 표시

(기초 자료 없음)

 

No matching rows after partition pruning

파티션된 테이블에 대한 Update, Delete 명령의 실행 계획에서 표시

해당 파티션에서 Update하거나 Delete 할 대상 레코드가 없을 때 표시

 

No matching... Impossible Where... 등의 메시지는 단지 쿼리의 실행 계획을 산출하기 위한 기초 자료가 없음을 표현한 것

 

 

추후 계속 업데이트 

'Back-End > DB' 카테고리의 다른 글

Real MySQL 8.0 [실행계획]  (4) 2025.09.01
락에 대하여  (0) 2025.08.20
정렬 방식 실렬 방식 실습  (0) 2025.07.01
Real MySQL 8.0 [데이터 처리 방식 및 정렬]  (0) 2025.06.27
Real My Sql 8.0 [인덱스]  (1) 2025.06.20