MySQL explain 명령에 대한 type 컬럼 설명
컨텐츠 정보
- 9,250 조회
- 0 추천
- 목록
본문
MySQL explain 명령에 대한 type 컬럼 설명은 다음과 같습니다.
* ALL
- full table scan
- MySQL 이 행을 찾기 위해 테이블의 처음부터 끝까지 스캔해야 한다는 것을 의미한다.
* index
- index 순서로 스캔하므로 정렬할 필요가 없다는 장점이 있다.
- 가장 큰 단점은 전체 테이블을 index 순서로 읽어들이는 비용에 있고 이는 임의의 순서로 행에 접근하는 데에 큰 비용이 필요하다는 의미이다.
- Extra 컬럼에 "Using index" 가 출력된다면 MySQL 이 커버링 인덱스를 사용하게 되고, index 순서로 각 행을 읽는 것이 아니라 index 에 있는 데이터만을 스캔한다는 것을 의미하며 테이블을 index 순서로 스캔하는 것에 비해 비용이 적에 든다.
* range
- index 의 특정 부분에서 시작해서 특정 범위에 있는 값을 가지는 행을 반환한다.
- 전체 index 스캔보다 더 나은 성능을 보인다.
* ref
- 어떤 값 하나에 대해 매치되는 행들을 반환해 주는 index 접근 방식이다.
* eq_ref
- MySQL 이 기껏해야 값 하나만을 반환해준다는 것을 알고 있을 때 이런 index 탐색법이 사용되며, MySQL 이 쿼리를 실행하기 위해 참조 값을 기본 키 혹은 unique index 에 비교할 때 이런 접근 방법을 사용하는 것을 확인할 수 있다.
* const, system
- 쿼리의 일부를 상수로 대체해서, 쿼리를 최적화할 수 있을 경우 MySQL 에서는 이런 접근 방법을 사용하게 된다.
- WHERE 절에 기본 키를 이용해 검색하는 조건을 사용하는 경우 MySQL 에서는 쿼리를 상수로 바꿔버린 뒤 조인에서 테이블을 사실상 제거해 버린다.
* NULL
- MySQL 이 최적화 단계에서 쿼리를 처리할 수 있으므로 실행 단계에서 index 나 테이블에 접근조차하지 않는다는 의미이다.
- index 가 되어 있는 컬럼에서 최소값을 선택하려는 경우라면 index 만 찾아보면 되므로 실행 단계에서 테이블에 접근할 필요가 없다.
관련자료
-
링크