실행 계획에서 출력되는 key_len
칼럼은 쿼리를 처리하기 위해 선택된 인덱스에서, 인덱스를 구성하고 있는 칼럼을 어디까지 쓰고 있는지 알려주는 정보이다.
즉 인덱스가 복합 칼럼으로 구성되어 있다면 이 칼럼들 중에서 어디까지 사용해서 쿼리를 처리하고 있는지 알려준다.
꼭 복합 칼럼의 인덱스에만 유효한 것은 아니다. 단일 칼럼의 세컨더리 인덱스는 내부적으로 인덱스에 PK 가 숨겨져 있다. (PK 가 있어야지 테이블 레코드에 엑세스 할 수 있기 때문.)
이 PK 까지 사용하고 있는지 알려줄 수 있는 정보가 key_len
칼럼이다.
예시로 보자. 다음 쿼리의 PK 는 (dept_no, emp_no) 로 구성되어 있다:
key_len
이 16바이트로 출력되었다. 이는 PK 에서dept_no
만 이용되고 있다는 뜻이다.dept_no
는 칼럼 타입이 CHAR(4) 로 구성되어 있고, utf8mb4 문자 집합이기 때문에 CHAR 하나당 4바이트가 쓰인다.
만약 위의 예시를 다음 쿼리처럼 변경하면 key_len
칼럼은 20바이트가 쓰인다. 이는 emp_no
까지도 쓰인다는 뜻이다:
그리고 간혹 칼럼의 타입들보다 더 많은 바이트가 key_len
에 쓰이기도 하는데 NULLABLE 칼럼이라면 칼럼의 NULL 여부를 식별하기 위해서 내부적으로 1바이트 더 쓰이기도 한다.
'MySQL' 카테고리의 다른 글
MySQL 실행 계획 분석: row 칼럼 (0) | 2023.11.07 |
---|---|
MySQL 실행 계획 분석: ref 칼럼 (0) | 2023.11.07 |
MySQL 실행 계획 분석: key 칼럼 (0) | 2023.11.07 |
MySQL 실행 계획 분석: possible_keys 칼럼 (0) | 2023.11.07 |
MySQL 실행 계획 분석: partitions 칼럼 (0) | 2023.11.07 |