인덱스란
추가적인 쓰기 작업과 저장공간을 활용하여 데이터베이스 테이블의 검색속도를 향상하기 위한 자료구조
구조
특정 컬럼에 인덱스를 생성하면, 해당 컬럼의 데이터들을 정렬하여 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장
B+트리 자료구조 : O(log2^N) 성능의 빠른 조회 가능
장점
- WHERE 조건
- 풀스캔(Full Sacn) : 데이터 전체를 모두 돌면서 조회하는 방법 O(n)
- 인덱스스캔(Index Scan) : 인덱스 설정한 컬럼은 정렬되어 있기 때문에 조건에 맞는 데이터를 빠르게 찾아낼 수 있음
- ORDER BY 정렬
- 인덱스 설정 시 이미 별도의 메모리에 데이터를 정렬하여 저장하기 때문에 정렬이 되어있음
단점
- 데이터 변경에 취약
- INSERT, UPDATE, DELETE를 통해 데이터가 변경되면, 인덱스 테이블의 값을 재정렬 해야 함(조회위주의 테이블에 인덱스를 설정하는 것이 좋음)
- 메모리 사용이 많음
- 인덱스 관리를 위해선 데이터 베이스의 약 10%의 저장공간을 사용함
- 데이터양이 적으면 인덱스 사용 X
- 많은 양의 데이터를 조회 시 인덱스 스캔을 하면 좋지만, 양이 많지 않을 경우 일반적인 풀스캔을 하는 것이 더 효율적
'coding > IT, CS' 카테고리의 다른 글
SQL - 쿼리문 CRUD 명령어 (1) | 2022.12.31 |
---|---|
시간 복잡도, 공간 복잡도 (0) | 2022.11.26 |
NginX란 (0) | 2022.11.19 |
MVC, MVP, MVVM 패턴의 이해 (0) | 2022.11.18 |
이진 탐색법 (0) | 2022.11.15 |