실행 계획 분석: id 칼럼

공부하는 감자·2024년 4월 27일
0

MySQL

목록 보기
64/74
post-thumbnail

실행 계획에 표시되는 각 컬럼이 어떤 것을 의미하고, 어떤 값이 출력되는지 살펴본다.

id 칼럼

단위 쿼리

  • 하나의 SELECT 문장은 다시 1개 이상의 하위(SUB) SELECT 문장을 포함할 수 있다.
    SELECT ...
    FROM (SELECT ... FROM tb_test1) tb1, tb_test2 tb2
    WHERE tb1.id = tb2.id
  • 쿼리 문장을 SELECT 키워드 단위로 구분한 것을 “단위(SELECT) 쿼리”라고 표현한다.
    ## 위의 쿼리 문장을 SELECT 단위로 구분한 결과
    SELECT ... FROM tb_test1;
    SELECT ... FROM tb1, tb_test2 WHERE tb1.id = tb2.id

id 칼럼

  • 실행 계획에서 가장 왼쪽에 표시된다.
  • 단위 SELECT 쿼리별로 부여되는 식별자 값이다.
  • 아래 쿼리의 경우 실행 계획에서 최소 2개의 id 값이 표시될 것이다.
    SELECT ...
    FROM (SELECT ... FROM tb_test1) tb1, tb_test2 tb2
    WHERE tb1.id = tb2.id
  • 하나의 SELECT 문장 안에서 여러 개의 테이블을 조인하면 조인되는 테이블 개수만큼 실행 계획 레코드가 출력되지만, 같은 id 값이 부여된다.
    ## 다음 쿼리의 실행 계획은 2개의 레코드가 출력되고,
    ## 각 레코드의 id값은 1로 동일하다.
    EXPLAIN
    SELECT e.emp_no, e.first_name, s.from_date, s.salary
    FROM employees e, salaries s
    WHERE e.emp_no-s.emp_no LIMIT 10;
    
    ## 다음 쿼리의 실행 계획은 3개의 레코드가 출력되고,
    ## 각 레코드의 id값은 1~3까지로 모두 다르다.
    EXPLAIN
    SELECT
    	( (SELECT COUNT(*) FROM employees) + (SELECT COUNT(*) FROM departments) ) AS total

주의 사항

  • id 칼럼이 테이블의 접근 순서를 의미하지는 않는다.
  • EXPLAIN FORMAT=TREE 명령으로 확인하면 순서를 더 정확히 알 수 있다.

Reference

참고 서적

📔 Real MySQL 8.0

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

0개의 댓글