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

관련자료

댓글 0
등록된 댓글이 없습니다.
Today's proverb
행복해지고 싶다면, 잠시 동안만이라도 가슴에 손을 얹고 생각해 보라. 그러면 진정한 즐거움은, 발치에 돋아나는 잡초나 아침 햇살에 빛나는 꽃의 이술과 같이 우리 주변에 무수히 널려 있다는 것을 알 수 있을 것이다. 《하루 5분 생각이 인생을 결정한다 》 (이범준)