실행 계획에서 출력되는 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바이트 더 쓰이기도 한다.

+ Recent posts