DB

[MySQL] Extra 컬럼에 자주 뜨는 문구 해석법 (Using temporary 등) 🧐

인생아 2025. 7. 4. 03:19
반응형

MySQL EXPLAIN 실행계획에서 가장 오해하기 쉬운 컬럼 중 하나가 바로 Extra 컬럼이다.
이 컬럼에는 쿼리 실행 중 발생하는 추가 작업이 텍스트로 출력되는데, 이를 해석하면 성능 병목을 빠르게 진단할 수 있다.

🔍 Extra 컬럼이란?

EXPLAIN 실행 시 나오는 각 행(row)의 마지막 컬럼으로, 쿼리 실행 중 MySQL이 수행하는 부가 작업 정보가 나타난다.
이 컬럼의 내용을 파악하면 인덱스 사용 여부, 임시 테이블 생성 여부, 정렬 작업 존재 여부 등을 확인할 수 있다.

반응형

🧩 자주 등장하는 Extra 문구 해석

1️⃣ Using where

조건절을 기반으로 필터링하고 있다는 의미다.
보통 인덱스를 사용하더라도 WHERE 조건으로 최종 필터링이 필요한 경우에 이 문구가 뜬다.

  • 의미: 조건절이 실행 중 필터링에 사용됨
  • 예시: 
SELECT * FROM users WHERE age > 30;
  • 최적화 팁: 인덱스를 추가해 조건절을 커버하면 좋다

2️⃣ Using index

커버링 인덱스(covering index)를 사용한 경우에 출력된다.
데이터 테이블을 직접 조회하지 않고, 인덱스에 포함된 컬럼만으로 결과를 반환하는 경우다.

  • 성능: 매우 빠른 접근 방식
  • 예시: 
SELECT id, name FROM users WHERE id = 1;
  • 인덱스(id, name)를 만들면 이 문구가 뜬다

Using where; Using index 같이 함께 나오는 경우도 있다 → 조건절 필터링은 필요하지만, 결과는 인덱스만으로 반환 가능함


3️⃣ Using temporary

MySQL이 내부적으로 임시 테이블을 생성해서 작업할 때 나타난다.
GROUP BY, DISTINCT, ORDER BY 등에서 자주 등장한다.

  • 예시: 
SELECT age FROM users GROUP BY age;
  • 성능 이슈: 디스크 I/O 증가로 인해 성능 저하 가능
  • 해결 팁:
    • GROUP BY 컬럼에 인덱스 생성
    • 정렬 기준에 맞는 covering index 적용

4️⃣ Using filesort

MySQL이 명시적인 인덱스를 사용하지 않고 정렬 작업을 직접 수행할 때 출력된다.

  • 예시: 
SELECT * FROM users ORDER BY name DESC;
  • 문제점: 인덱스를 활용한 정렬이 아닌 → 메모리 or 디스크 정렬
  • 해결 팁:
    • ORDER BY 대상 컬럼에 인덱스 생성
    • WHERE 조건 + ORDER BY 조합에 맞는 복합 인덱스 고려

5️⃣ Using join buffer (Block Nested Loop)

인덱스 없는 조인 수행 시 MySQL이 조인 버퍼를 사용하여 Block Nested Loop 방식으로 처리한 것을 의미한다.

  • 예시:
SELECT * FROM users u
JOIN orders o ON u.id = o.user_id;
--이때 o.user_id에 인덱스가 없으면 Using join buffer가 뜬다
  • 해결 팁:
    • 조인 대상의 외래키에 인덱스 추가
    • 조인 순서 최적화
반응형

🛠 Extra에서 주의해야 할 신호들

문구 성능 영향 대처 방법
Using filesort ❌ 높음 정렬 컬럼에 인덱스
Using temporary ❌ 높음 GROUP BY, ORDER BY 컬럼에 인덱스
Using join buffer ⚠️ 중간 조인 키에 인덱스 추가
Using where ⚠️ 낮음 조건절 컬럼 인덱스 고려
Using index ✅ 좋음 커버링 인덱스 설계 활용

 

💡 실무 팁: Extra에 아무것도 없으면 좋은 것일까?

꼭 그렇지는 않다.
EXPLAIN 출력 결과 중 Extra가 NULL이거나 비어 있으면, MySQL이 특별한 추가 작업을 하지 않았다는 뜻이지만,
그 자체로 쿼리가 빠르다는 보장은 아니다.
항상 type, key, rows 등과 함께 종합적으로 분석해야 한다.


📚 공식문서 참고

반응형