[DB Study] 인덱스 기본 개념
추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상 시키기 위한 자료구조
인덱스를 저장하는 곳의 가장 작은 단위는 블록
원본을 찾아갈 수 있는 주소로 구성되어있다.
장점
1.1. 테이블을 조회하는 속도와 그에 따른 성능을 향상시킬 수 있다.
1.2. 전반적인 시스템의 부하를 줄일 수 있다.
단점
2.1. 인덱스를 관리하기 위해 DB의 약 10%에 해당하는 저장공간이 필요하다.
2.2. 인덱스를 관리하기 위해 추가 작업이 필요하다.
2.3. 인덱스를 잘못 사용할 경우 오히려 성능이 저하되는 역효과가 발생할 수 있다.
1. Index Unique Scan
2. Index Range Scan
3. Index Full Scan
4. Index Skip Scan
5. Index Fast Full Scan
WHERE 절에 좌측 비교 대상을 Function등으로 변형을 시킨다면 FBI 기반으로 Index를 생성해야 한다.
묵시적 형변환
WHERE X_ID = '123'
-- 위 조건문에서 X_ID의 DataType이 Number 라면
-- 아래와 같이 묵시적 형변환이 일어난다.
WHERE TO_CHAR(X_ID) = '123'
-- TO_CHAR(X_ID) 라는 Index가 설정되어 있지 않기 때문에
-- Index가 작동 되지 않는다.
-- 따라서 아래와 같이 조건문을 수정해야한다.
WHERE X_ID = TO_NUMBER('123')
인덱스 컬럼에 NULL 데이터가 있으면 인덱스를 이용해 데이터를 가져올 수 없고, NOT NULL 제약 조건이 걸려있지 않은 컬럼이라면 WHERE 구문에 IS NOT NULL 을 추가 해줘야 한다.
부정형 비교와 여러 칼럼에 대한 OR 조건을 사용한다면 Index Scan 이 불가 할 수 있다.