Database

MySQL explain 명령에 대한 type 컬럼 설명

페이지 정보

본문

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 만 찾아보면 되므로 실행 단계에서 테이블에 접근할 필요가 없다.




출처 : https://blog.naver.com/websearch/221566114706

관련자료

등록된 댓글이 없습니다.
Today's proverb
마음은 서로가 주고받는 메아리다. (법정)