[Database] 인덱스

YoungHyo Choi·2021년 11월 18일
0

Database

목록 보기
2/2

정의

  • 데이터베이스 내에서 테이블에 대한 동작 속도 (검색 속도)를 높여주는 자료구조
  • 책의 색인처럼 데이터베이스 테이블을 저장한 뒤 해당 색인을 사용해 원하는 데이터를 검색

원리

  • 특정 컬럼에 대한 인덱스 생성시, 해당 컬럼의 데이터들을 정렬해 별도의 공간에 데이터의 주소와 함께 저장
    • MYI 파일에 인덱스 정보를 저장한다.
    • MYI 파일은 Key (인덱스로 생성한 컬럼 값), RowID (데이터가 저장된 주소 값)의 구조를 통해 검색 및 정렬 속도를 향상시킴
  • 저장한 인덱스를 통해 Table을 Full Scan하지 않는다.

장점

  • 원하는 데이터를 찾기 위해 테이블을 검색하는 작업을 줄이거나 없앨 수 있다.
  • 색인화된 인덱스 파일 검색으로 검색 속도를 향상시킬 수 있다.
  • 따라서 SELECT, JOIN 쿼리가 잦고, 변경이 잦지 않는 테이블의 경우 인덱스를 사용하면 좋다.

단점

  • 테이블에 새로운 데이터의 CRUD가 일어날 경우, 인덱스에도 작업이 생기기 때문에 오버헤드가 발생할 수 있다.
  • 따라서 데이터 변경 작업이 자주 일어나는 경우, 성능이 떨어질 수 있다.

References

profile
golang과 elasticsearch를 좋아하는 3년차 백엔드 엔지니어입니다.

0개의 댓글