최근 업무를 하다가 인덱스의 중요성에 대해 한번 더 느낄 수 있는 상황이 오게 되어 메모해 놓으려고 한다.
.
.
.
인덱스가 없는 경우 SELECT를 했을 때 해당 테이블의 레코드를 전부 읽어 찾게 되는 FULL SCAN이 발생된다.
* FULL SACN 하드디스크에 저장되어있는 데이터들을 전부 탐색
만약 백만개의 데이터가 있는 테이블에서 값을 찾고 싶다면 우린 백만개의 데이터를 읽게 되는것이다!
(이 얼마나 비효율적인 상황인지 😥)
그렇다면 해당 상황에서 검색되는 컬럼에 인덱스가 걸려 있다면 어떻게 되는지 알아보자.
여러 블로그를 읽어보니 대표적으로 B-TREE 구조 기반으로 다른 구조들도 비슷하여
대부분 B-TREE 구조를 다루고 있는 듯 하다.
해당 블로그에 너무 잘 정리 되어있어 링크로 대체하려한다. (그림도 너무 깔끔👍)
https://velog.io/@emplam27/자료구조-그림으로-알아보는-B-Plus-Tree
인덱스의 대표적인 장단점으로 검색 속도는 빨라 지지만
INSERT, UPDATE, DELET 수행 시 인덱스 연산이 추가적으로 이루어져야 함으로써 성능 저하가 될 수 있다.
해당 원인도 위에 첨부한 블로그에서 자연스레 이해가 될 것이다.
...
이 밖에도 많은 인덱스 구조와 스캔 방법이 있어 찾아봤던 사이트를 참고용으로 남긴다.
'~ 2024.08' 카테고리의 다른 글
Nest.js (0) | 2023.05.23 |
---|---|
[Nest.js] Mailer Error :: Username and Password not accepted (0) | 2023.05.18 |
[React] 리액트 컴포넌트 테스트 환경 설정 (0) | 2022.06.28 |
[NestJS] Task Scheduling (0) | 2022.05.22 |
[TypeORM] update시 @BeforeUpdate가 작동하질 않아 😩 (1) | 2022.03.19 |