인덱스

인덱스는 RDBMS에서 검색속도를 높이기 위해 사용하는 하나의 기술입니다. 색인의 개념이죠.

구체적으로 살펴보면 해당 테이블의 컬럼을 색인화(파일로 별도 저장)하여 검색시 해당 테이블의 레코드를 FullScan하지 않고 색인화 되어있는 INDEX 파일을 검색하여 검색속도를 높이는 방법입니다.

참고로, RDBMS의 인덱싱은 BST(Balance Search Tree) 자료구조를 사용합니다.

INDEX의 원리

INDEX를 해당 컬럼에 주게되면 초기 Table생성 시 FRM, MYD, MYI 3개의 파일이 만들어집니다.

이때, INDEX를 사용하지 않는 경우 MYI파일은 비어져 있습니다. 그러나 INDEX를 해당 컬럼에 만들게 되면 해당 컬럼을 따로 인덱싱하여 MYI파일에 입력하게되죠.

이후 사용자가 SELECT쿼리로 INDEX를 사용하는 쿼리 사용 시 해당 TABLE을 검색하는 것이 아니라 MYI파일의 내용을 검색하게 됩니다.

다만, INDEX를 사용하지 않은 SELECT쿼리라면 TABLE을 풀스캔하여 검색합니다

INDEX의 목적

SELECT 쿼리의 WHERE절 혹은 JOIN예약어를 사용할 경우 검색속도 및 정렬속도를 빠르게 하기 위함입니다.

그렇다면 인덱싱의 장단점은 무엇일까요?

장점