coding/IT, CS

인덱스(INDEX)

JIN_Coder 2023. 1. 27. 19:15

인덱스란

추가적인 쓰기 작업과 저장공간을 활용하여 데이터베이스 테이블의 검색속도를 향상하기 위한 자료구조

 

구조

특정 컬럼에 인덱스를 생성하면, 해당 컬럼의 데이터들을 정렬하여 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장
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