인덱스란?

  • 인덱스는 지정한 컬럼들을 기준으로 메모리 영역에 목차를 생성하는 것
  • insert,update,delete의 성능을 떨어뜨리고, select의 성능을 향상 시킨다.
    • 이때, insert,update,delete의 성능이 떨어지는 것이지, insert,update,delete하기 위해 데이터를 조회하는 것은 인덱싱에 의해서 빠르게 조회가 된다.
    • 인덱스가 없는 컬럼을 조건으로 UPDATE,DELETE하게 되면 굉장히 느려지므로, 많은 양의 데이터를 삭제 해야하는 상황에서는 인덱스로 지정된 컬럼을 기준으로 삭제하길 권고
  • B+트리, 해시등의 알고리즘을 사용한다.

인덱스 원리

  • 인덱스를 컬럼에 부여하면 초기 TABLE생성시 만들어진 myd,myi,frm 3개의 파일 중에서 myi에 해당 컬럼을 색인화 하여 저장한다.
  • 사용자가 SELECT쿼리로 index가 사용하는 쿼리를 사용시 해당 table을 검색하는 것이 아니라 빠른 tree로 정리해둔 myi파일의 내용을 검색한다.
  • 만약, index를 사용하지 않은 select쿼리라면 해당 table을 full scan하여 속도가 느리다.

인덱스의 장점