[mysql] 인덱스 정리 및 팁

• MySQL의 인덱스는 지정한 컬럼들을 기준으로 메모리 영역에 목차를 생성하는 것으로, 데이터 삽입, 수정, 삭제의 성능을 희생하고 대신 데이터 조회의 성능을 향상시킵니다. 인덱스는 Root에서 Leaf까지의 탐색 과정을 거치며, 인덱스의 성능 향상은 디스크 저장소에 얼마나 덜 접근하게 만드는지, 인덱스 Root에서 Leaf까지 오고가는 횟수를 얼마나 줄이는지에 달려있습니다.
• 인덱스 키 값의 크기는 성능에 영향을 미치며, 키가 길수록 성능상 이슈가 발생할 수 있습니다. 또한 인덱스를 설정할 때는 카디널리티가 가장 높은 컬럼을 선택하는 것이 좋습니다. 카디널리티란 특정 컬럼의 중복된 수치를 나타내는 지표로, 카디널리티가 높을수록 중복된 값이 적다는 의미이며 이는 인덱스의 성능을 높이는데 도움이 됩니다.
• 데이터베이스에서 카디널리티는 해당 컬럼의 중복된 수치를 나타내며, 카디널리티가 높을수록 인덱스를 통해 데이터의 대부분을 걸러내기 때문에 검색이 빠르다. 예를 들어, 성별과 같이 카디널리티가 낮은 경우 인덱스를 통해 50%밖에 걸러내지 못하지만, 주민등록번호나 계좌번호와 같이 카디널리티가 높은 경우 인덱스를 통해 대부분의 데이터를 걸러낼 수 있다.
• 여러 컬럼으로 인덱스를 구성할 때는 카디널리티가 높은 순서에서 낮은 순서로 구성하는 것이 좋다. 실험 결과, 카디널리티가 높은 순서에서 낮은 순서로 인덱스를 구성한 경우 검색 속도가 더 빨랐다.

북마크
공유하기
신고하기