반응형
데이터베이스 인덱스(DB INDEX)에 대해 알아보기
1. INDEX란?
- 데이터를 조금 더 빠르게 찾을 수 있도록 해주는 도구
- RDBMS에서 검색속도를 높이기 위해 사용하는 하나의 기술
- 해당 테이블의 칼럼을 색인화하여 검색 시 해당 테이블의 레코드를 full scan 하는 게 색인화 되어 있는 인덱스 파일을 검색하여 검색속도향상
2. INDEX의 원리
- 인덱스를 해당 커럼에 주게 되면 초기 테이블 생성 시 만들어진 MYD, MYI, FRM 3개의 파일 중에서 MYI에 해당 칼럼을 색인화하여 저장합니다. 물론 INDEX를 사용 안 할 시에는 MYI 파일은 비어 있습니다. 그래서 INDEX를 해당칼럼에 만들게 되면 해당칼럼을 따로 인덱싱하여 MYI 파일에 입력합니다.
- 사용자가 SELECT 쿼리문으로, 인덱스가 사용하는 쿼리를 사용 시 해당 테이블을 검색하는 것이 아니라 빠른 TREE로 정리해둔 MYI파일의 내용을 검색합니다.
- INDEX를 사용하지 않은 SELECT 쿼리문이면 해당 테이블을 full scan하여 모두 검색합니다.
3. 인덱스의 장점
- 테이블의 기본키는 자동으로 인덱스 됩니다.
- 검색속도가 엄청 빨라 질 수 있습니다.(단, 항상 그런 것은 아니다.)
- 그 결과 해당 쿼리의 부하가 줄어들어서, 시스템 전체의 성능이 향상됩니다.
- 칼럼 중에는 데이터 형식 때문에 인덱스 될 수 없는 칼럼도 있습니다.
4. INDEX의 단점
- 데이터베이스 공간을 차지해서 추가적인 공간이 필요해집니다.(.mdb 파일 증가)
- 처음 인덱스를 생성하는 시간이 많이 소요됩니다.
- 데이터의 변경 작접이 자주 일어날 경우에는 오히려 성능이 많이 나빠질 수 있습니다.
5. INDEX의 목적
※ DELECT, INSERT, UPDATE 쿼리문에는 해당 사항없으며 사용 시 느려집니다.
- INDEX의 목적은 검색 속도를 높이는데 있습니다.
- SELECT 쿼리문의 WHERE 절이나 JOIN 예약어를 사용했을 때만 INDEX가 사용되며 SELECT 쿼리문의 검색 속도를 빠르게 하는데 목적을 두고 있습니다.
- INDEX를 잘 사용하면 검색의 속도가 월등히 향상되고, 시스템의 성능이 좋아지는 반면 잘못 사용하면 오히려 사용하지 않은 것보다 더 나쁜 결과 초래할 수 있습니다.
6. INDEX를 사용해야 하는 경우와 그렇지 않은 경우
- INDEX는 열 단위에 생성됩니다.
하나의 열에만 생성되는 것이 아니라 두 개 이상의 열을 조합해서 인덱스를 생성할 수 있다. - WHERE절에서 사용되는 열에 INDEX를 만들어야 합니다.
- WHERE절에 사용되더라도 자주 사용햐여 가치가 있습니다.
- 데이터의 중복도가 높은 열은 인덱스를 만들어도 별 효과가 없습니다.
- JOIN애 자주 사용되는 열에는 인덱스를 생성해 주는 것이 좋습니다.
INDEX는 단지 읽기에서만 성능을 향상시키며, 데이터의 변경에서는 오히려 부담을 주게 된다. - INSERT, DELETE, UPDATE가 얼마나 자주 일어나는 지를 고려해야 합니다.
- 사용하지 않는 인덱스는 제거합니다.
공강을 확보할 뿐 아니라 데이터의 입력 시에 발생되는 부하도 많이 줄일 수 있습니다.
여기까지 읽어주셔서 감사합니다! 😊
이 글이 도움이 되었다면 공감(❤️) 버튼으로 응원해주세요!
궁금한 점이 있거나 의견이 있다면 댓글로 자유롭게 남겨주세요! 💬
여러분의 관심과 피드백이 큰 힘이 됩니다. 🙌✨
반응형