Index는 데이터베이스에서 table의 검색 성능을 높여주는 대표적인 방법중 하나입니다. 일반적인 RDBMS(관계형데이터베이스)에서는 B+Tree구조로 된 index를 사용하여 검색속도를 향상시킵니다.
<index의 장단점>
장점
1. 검색 속도 향상 -> 테이블안에 데이터가 무분별하게 섞여 있을 경우 index가 없을 경우 처음부터 끝까지 다 읽어서 검색조건과 맞는지 비교해야된다 이것을 Full Table Scan 이라고 한다. 반면에 index가 있을 경우 데이터들이 정렬되어 저장되어 있기 때문에 검색 조건에 일치하는 데이터들을 빨리 찾아낼 수 있습니다
단점
1. 추가 저장공간이 필요
-> index 자료구조를 위한 저장공간이 추가적으로 필요하다. 보통 table크기의 10%정도의 공간을 차지한다
2. 데이터 변경 작업시 성능이 나빠질 수 있다.
데이터 변경시 INSERT UPDATE DELETE 가 자중 발생하면 성능이 나빠진다. -> UPDATE DELETE는 기존의 인덱스를 삭제하지 않고 '사용하지 않음' 처리를 해준다고 한다. 이러면 어떤 테이블에 데이터 변경이 많이 발생한다면 인덱스의 크기가 점점 커지게 되면서 단순한 sql문 처리 시 비대해진 인덱스에 의해 성능이 떨어지게 된다.
<index를 사용하면 좋은 경우>
1. 규모가 작지 않은 테이블
2. INSERT UPDATE DELETE 가 자주 발생하지 않는 컬럼
3. JOIN WHERE ORDER BY 에 자주 사용되는 컬럼
4. 데이터의 중복도가 낮은 컬럼
index의 자료구조
1. Hash Table
빠른 데이터검색이 필요할 떄 유용. 등호(=)연산에만 특화되었기 때문에 제한적. 데이터가 조금이라도 달라지면 hash function 은 완전히 다른 hash값을 생성한다.
2. B+Tree(Balanced + Tree)
1) 항상 정렬된 상태를 유지하여 부등호 연산에 유리하다.
2) 데이터 탐색뿐 아니라, 저장, 수정, 삭제에도 항상 O(logN)의; 시간 복잡도를 가진다.
'데이터베이스' 카테고리의 다른 글
w3school sql연습사이트 (0) | 2024.02.09 |
---|---|
키의 종류와 기능 (0) | 2024.01.18 |
데이터베이스의 무결성이란? (0) | 2024.01.17 |
DML, DDL, DCL이란? (2) | 2024.01.11 |
DB 정규화란? (0) | 2024.01.11 |
댓글