<aside> 💡 데이터베이스 인덱스, 많이 들어만 봤지 정리 좀 하자 !
</aside>
Index 란, RDBMS에서 검색 속도를 높이기 위한 기술
TABLE 의 컬럼을 **색인화(따로 파일로 저장)
**하여
→ 검색시 해당 테이블의 레코드를 Full Scan 하는 것이 아닌, **색인화 되어있는 INDEX 파일을 검색
**하여
→ **검색 속도를 향상
**시킨다.
인덱스 자료구조로는 Hash Table
, B-Tree 에서 파생된 B+Tree
데이터를 디스크로부터 가져올 때 자주 사용하는 것을 메모리에 저장하여 빠른 속도로 조회/검색 필요
데이터가 메모리에 없다면 테이블 내에서 전체 스캔을 통해 조회해야 함(Full Table Scan)
Full Scan
, Table Scan
SQL 서버에서는 데이터 레코드가 내부적으로 아무런 순서없이 저장된다.
이때 데이터 저장 영역을 Heap 이라고 하며,
Heap 에서는 인덱스가 없는 테이블의 데이터를 찾을 때 전체 데이터 페이지의 처음 레코드부터 ~ 끝 페이지의 마지막 레코드까지 모두 조회하여 검색 조건과 비교 한다
→ Full Scan, Table Scan
많은 테이블에서 데이터 일부만 찾을 때 Full Scan 을 할 경우, 처리 성능이 떨어진다.
대용량 데이터에 비효율적이므로 인덱스를 통해 데이터를 관리하여 SELECT 검색 성능을 높이도록 한다.
explain
SELECT *
FROM item_info
where item_price = 120000
인덱스는 **메모리
**에 저장
(데이터 = 컬럼의 값, 데이터 위치)
를 **(Key, Value)
**로 사용
컬럼의 값으로 해시 함수를 거쳐 생성된 해시를 통해 인덱스 구현
→ 버킷 배열의 인덱스배열(버킷)
**을 사용하여 데이터를 저장