프로그래밍/database

MYSQL SHOW INDEX

브래드 킴 2022. 12. 15. 10:12
728x90

index 정보를 확인하기 위해 "show index from 테이블명;"을 하는 경우가 있다.

 

조회되는 주요 값들 중 어려울 수 있을만한 값들에 대해 정리하고자 한다. (너무 쉬운 내용은 뺐습니다.)

 

공식문서를 기반으로 내용을 추가하여 정리하였습니다.

출처)https://dev.mysql.com/doc/refman/8.0/en/show-index.html

 

  • Non_unique : 0인경우 unique, 1인 경우 non-unique

  • Key_name : pk값의 인덱스명은 언제나 PRIMARY. 명령문을 통해 만들때는 지정한 index명. orm을 통해 생성할땐 프로그램에서 만들어준 인덱스명(난수값).

  • Seq_in_index : 멀티컬럼인덱스일경우 순서, 1부터 시작합니다. 단일컬럼 인덱스일경우 1

  • Collation : 인덱스의 정렬방식을 의미. 디폴트는 A(ascending  - 오름차순), D(내림차순), Null(not sorted)

  • Cardinality : 유니크한 value값들의 개수를 의미. 이 값들은 mysql내에서 가지고 있는 값의 추정치이고, 이 숫자를 업데이트 하려면 ANALYZE TABLE 테이블명; 해당 숫자의 경우 작은 테이블일 수록 실제 cardinality와 일치하지 않을가능성이 높다. (<- 공식문서를 봤을때는 ANALYZE TABLE은 매번 실행될수는 없기에 값 조회에 따른 무작위선택에 따른 엔지 내부 로직으로 해당 테이블을 업데이트하고 있다. 그래서 show index의 조회값이 실제 cardinality값과 일치 하지 않을수 있다. ANALYZE TABLE에 대해 더 궁금하다면 오른쪽 공식문서 참고. https://dev.mysql.com/doc/refman/8.0/en/analyze-table.html

  • Index_type : BTREE, FULLTEXT, HASH, RTREE 가 있지만 BTREE가 기본이고, 긴 문자열 타입에서 특정 문자열 조회 시 풀스캔이 아닌 인덱스를 걸어 성능을 위해 FULLTEXT도 종종 사용.

 

728x90