MySQL 데이터베이스의 인덱스 목록 확인하기
MySQL에서 특정 데이터베이스에 생성된 모든 인덱스 정보를 한눈에 확인하고 싶다면 information_schema의 statistics 테이블을 조회하는 것이 가장 간편한 방법입니다. 이 테이블에는 서버 내 모든 테이블의 인덱스 관련 메타데이터가 저장되어 있습니다.
기본 조회 문법
인덱스를 확인하기 위한 기본적인 쿼리 문법은 다음과 같습니다.
select * from information_schema.statistics where table_schema = yourDatabaseName;
여기서 table_schema에는 인덱스를 확인하려는 데이터베이스 이름을 입력합니다.
실제 사용 예시
예를 들어 'web'이라는 데이터베이스의 인덱스 정보를 조회하려면 아래와 같이 쿼리를 작성합니다.
select * from information_schema.statistics where table_schema = 'web';
위 쿼리를 실행하면 'web' 데이터베이스에 속한 모든 테이블의 인덱스 정보가 한 번에 출력됩니다.
주요 결과 컬럼 설명
조회 결과에서 자주 확인하게 되는 주요 컬럼은 다음과 같습니다.
- TABLE_NAME : 인덱스가 생성된 테이블의 이름
- INDEX_NAME : 인덱스의 고유 이름
- COLUMN_NAME : 해당 인덱스가 적용된 컬럼
- NON_UNIQUE : 0이면 유니크(고유) 인덱스, 1이면 중복 값을 허용하는 일반 인덱스
- SEQ_IN_INDEX : 복합 인덱스일 경우 해당 컬럼의 순번
- CARDINALITY : 인덱스 컬럼의 고유 값 개수 추정치로, 높을수록 선택도가 좋음
특정 테이블의 인덱스만 확인하는 방법
데이터베이스 전체가 아니라 특정 테이블의 인덱스만 빠르게 확인하고 싶다면 SHOW INDEX 구문을 사용할 수도 있습니다.
SHOW INDEX FROM 테이블명;
두 가지 방법을 상황에 맞게 활용하면 데이터베이스 성능 튜닝이나 쿼리 최적화 작업 시 인덱스 구조를 손쉽게 파악할 수 있습니다.