실행 계획 분석: ref 칼럼

공부하는 감자·2024년 5월 3일
0

MySQL

목록 보기
70/74
post-thumbnail

ref 칼럼

  • 참조 조건(Equal 비교 조건)으로 어떤 값이 제공됐는지 보여준다.
    • 이 칼럼에 출력되는 값은 크게 신경 쓰지 않아도 무방하다.
  • 상숫값을 지정했다면 ref 칼럼의 값은 const로 표시되고, 다른 테이블의 칼럼값이면 그 테이블명과 칼럼명이 표시된다.

func 값

  • 가끔 쿼리의 실행 계획에서 ref 칼럼의 값이 func 으로 표시될 때가 있다.
  • 이는 “Function”의 줄임말로 참조용으로 사용되는 값을 그대로 사용한 것이 아니라 콜레이션 변환이나 값 자체의 연산을 거쳐서 참조됐다는 것을 의미한다.
  • 사용자가 명시적으로 값을 변환할 때뿐만이 아니라 MySQL 서버가 내부적으로 값을 변환해야 할 때도 func 이 출력된다.
    • 대표적인 예로, 문자집합이 일치하지 않는 두 문자열 칼럼을 조인하거나
    • 숫자 타입의 칼럼과 문자열 타입의 칼럼으로 조인할 경우
  • 가능하다면 조인 칼럼의 타입은 일치시키는 편이 좋다.

예제

  • 다음은 조인 조건에 사용된 emp_no 칼럼의 값에 대해 아무런 변환이나 가공을 수행하지 않은 쿼리이다.
    EXPLAIN
    SELECT *
    FROM employees e, dept_emp de
    WHERE e.emp_n = de.emp_no;
    • ref 칼럼에 조인 대상 칼럼의 이름이 그대로 표시된다.
  • 다음은 조인 조건에 간단한 산술 표현식을 넣은 쿼리이다.
    EXPLAIN
    SELECT *
    FROM employees e, dept_emp de
    WHERE e.emp_n = (de.emp_no-1);
    • ref 칼럼에 func 라고 표시된다.

Reference

참고 서적

📔 Real MySQL 8.0

profile
책을 읽거나 강의를 들으며 공부한 내용을 정리합니다. 가끔 개발하는데 있었던 이슈도 올립니다.

0개의 댓글