DB/구자료

INDEX

쿠키는고양이 2022. 8. 28. 15:20

 

인덱스란 테이블에서 데이터 검색을 빠르게 할 수 있도록 만들어 주는 구조체를 의미한다.

 

1. 인덱스의 장 / 단점

인덱스의 장단점을 간단하게 정리하면 다음과 같다.

장점 : 검색의 속도가 빨라진다.

단점 : 인덱스를 생성하는데 시간이 소요된다.

 

이렇게 장단점이 있으므로 사용하는 시점에 따라 약이 될 수도, 독이 될 수도 있다.

 

인덱스를 사용하면 좋은 경우는 다음과 같다.

1). WHERE 절이나 JOIN 등에서 조건으로 자주 사용되는 컬럼

2). NULL 값이 많이 포함되는 컬럼

 

반대로 안좋은 경우는 다음과 같다.

1). 테이블의 크기가 작은 경우 (데이터가 적게 들어가는 경우)

=> 크기가 작다면 인덱스를 안써도 충분히 검색이 빠르다.

 

2). 자주 갱신되는 테이블

=> 갱신이 자주될 수록 인덱스 또한 자주 변경되게 된다.

 

2. 인덱스의 생성 / 삭제

지난 포스팅에서 만든 사람, 자동차 테이블 사용해 본다.

인덱스의 생성은 다음과 같다.

CREATE INDEX HUMAN_INDEX
ON HUMAN(H_NAME);
 

위의 코드는 사람 테이블에서 사람의 이름을 인덱스로 작성한 부분이다.

생성은 테이블 생성과 동일하게 CREATE 문을 사용하였으며 아랫줄에서는 ON 을 통해 어떤 컬럼을 인덱스로

만들 것인지 설정한다. 위의 코드에서는 HUMAN 테이블의 H_NAME 컬럼을 인덱스로 설정한다는 의미이다.

 

삭제는 테이블 생성과 동일하게 DROP 구문을 사용한다.

DROP INDEX HUMAN_INDEX;
 

 

※ 검색 속도의 차이를 보기 위해 사람의 데이터를 2만개 넣어봤지만 속도는 0.001 초 차이였다.

하지만 규모가 큰 테이블의 경우 10만개 이상의 데이터가 들어가는 테이블도 많을 것이다.

아마도 속도를 높이기 위해서는 10만개 정도의 규모가 되어야 하지 않을까 싶다.