Skip to content

database 튜닝

explain 시에 나오는 타입

image-20210710235127721

  • system 타입
1
2
3
4
5
6
7
CREATE TABLE myisam_테이블 (
    col1 INT(11) NULL DEFAULT NULL
);
INSERT INTO myisam_테이블 VALUES(1);

EXPLAIN
SELECT * FROM myisam_테이블;
  • 가장 좋은 type(테이블에 데이터가 없거나 한 개만 있는 경우)

  • const 타입

1
2
3
4
EXPLAIN
SELECT *
  FROM 사원
WHERE 사원번호 = 10001;
  • 조회되는 데이터가 단 1건일 때 출력되는 유형으로, 성능상 매우 유리한 방식입니다. 고유 인덱스나 기본 키를 사용하여 단 1건의 데이터에만 되므로 속도나 리소스 사용 측면에서 지향해야 할 타입입니다.

  • eq_ref 타입

1
2
3
4
5
6
EXPLAIN
SELECT 매핑.사원번호, 부서.부서번호, 부서.부서명
FROM 부서사원_매핑 as 매핑,
  부서
WHERE 매핑.부서번호 = 부서.부서번호
  AND 매핑.사원번호 BETWEEN 100001 AND 100010;
  • 조인이 수행될 때 드리븐 테이블의 데이터에 접근하며 고유 인덱스 또는 기본 키로 단 1건의 데이터를 조회하는 방식입니다. 드라이빙 테이블과의 조인 키가 드리븐 테이블에 유일하므로 조인이 수행될 때 성능상 가장 유리한 경우라고 할 수 있습니다.

  • ref타입

  • 앞에서 설명한 eq_ref 유형과 유사한 방식으로, 조인을 수행할 때 드리븐 테이블의 데이터 접근 범위가 2개 이상일 경우를 의미합니다. 즉, 드라이빙 테이블과 드리븐 테이블이 조인을 수행하면 일대다 관계가 되므로, 드라이빙 테이블의 1개 값이 드리븐 테이블에서는 2개 이상의 데이터로 존재합니다.