최근 업무를 하다가 인덱스의 중요성에 대해 한번 더 느낄 수 있는 상황이 오게 되어 메모해 놓으려고 한다.
.
.
.
인덱스가 없는 경우 SELECT를 했을 때 해당 테이블의 레코드를 전부 읽어 찾게 되는 FULL SCAN이 발생된다.
* FULL SACN 하드디스크에 저장되어있는 데이터들을 전부 탐색
만약 백만개의 데이터가 있는 테이블에서 값을 찾고 싶다면 우린 백만개의 데이터를 읽게 되는것이다!
(이 얼마나 비효율적인 상황인지 😥)
그렇다면 해당 상황에서 검색되는 컬럼에 인덱스가 걸려 있다면 어떻게 되는지 알아보자.
여러 블로그를 읽어보니 대표적으로 B-TREE 구조 기반으로 다른 구조들도 비슷하여
대부분 B-TREE 구조를 다루고 있는 듯 하다.
해당 블로그에 너무 잘 정리 되어있어 링크로 대체하려한다. (그림도 너무 깔끔👍)
https://velog.io/@emplam27/자료구조-그림으로-알아보는-B-Plus-Tree
인덱스의 대표적인 장단점으로 검색 속도는 빨라 지지만
INSERT, UPDATE, DELET 수행 시 인덱스 연산이 추가적으로 이루어져야 함으로써 성능 저하가 될 수 있다.
해당 원인도 위에 첨부한 블로그에서 자연스레 이해가 될 것이다.
...
이 밖에도 많은 인덱스 구조와 스캔 방법이 있어 찾아봤던 사이트를 참고용으로 남긴다.
'웹 프로그래밍' 카테고리의 다른 글
[TypeORM] update시 @BeforeUpdate가 작동하질 않아 😩 (1) | 2022.03.19 |
---|---|
[JavaScript] 스로틀(Throttle ) & 디바운스(Debounce) (4) | 2020.07.13 |
[emailJS] 자바스크립트로 이메일을 보내보자✍ (0) | 2020.04.20 |
[ Node.js / Webpack ] 출력 관리 (0) | 2020.03.28 |
[ html2canvas / jszip ] html화면 캡쳐 zip파일로 다운받기 (0) | 2020.03.17 |