index란? 효율적인 index는 무엇인가?


database에서 사용되는 index에 대해서 알아보자.

index란?

데이터베이스 분야에 있어서 테이블에 대한 동작의 속도를 높여주는 자료 구조. 레코드 접근과 관련 효율적인 순서 매김 동작에 대한 기초를 제공한다.

  • 인덱스는 특정 칼럼 값을 가지고 있는 열 혹은 값을 빠르게 찾기 위해서 사용된다.
  • MySQL은 첫 번째 열부터 전체 테이블에 걸쳐서 연관된 열을 검색하기 때문에 테이블이 크면 클 수록 비용이 엄청나게 늘어난다.
  • 만약 테이블이 쿼리에 있는 컬럼에 대한 인텍스를 가지고 있다면,
  • MySQL은 모든 데이터를 조사하지 않고도 데이터 파일의 중간에서 검색위치를 빠르게 잡아낼 수 있다.
  • 인덱스 위주 검색 후, 관련된 혹은 원하는 데이터들을 가져올 수 있다고 생각할 수도 있다.

index를 사용하는 이유?

  • WHERE 구문과 일치하는 열을 빨리 찾기 위해서.
  • 열을 고려 대상에서 빨리 없애 버리기 위해서.
  • 조인 (join)을 실행할 때 다른 테이블에서 열을 추출하기 위해서.
  • 특정하게 인덱스된 컬럼을 위한 MIN() 또는 MAX() 값을 찾기 위해서.
  • 사용할 수 있는 키의 최 좌측 접두사 (leftmost prefix)를 가지고 정렬 및 그룹화를 하기 위해서.
  • 데이터 열을 참조하지 않는 상태로 값을 추출하기 위해서 쿼리를 최적화 하는 경우에.

좋은 index는?

  • 자주 조회되는 칼럼에 적용
  • 조회 시 오랜시간을 소모하는 컬럼에 적용
  • 데이터가 긴 경우 인덱스를 사용하지 않는다.





© 2020. by berrrrr

Powered by berrrrr