A. 인덱스
1. 검색 성능의 최적화를 위한 객체임
2. 테이블 데이터를 특정 컬럼으로 정렬하여 생성할 수 있는 구조
3. 개수가 많을수록 INSERT, UPDATE, DELETE등과 같은 DML 작업은 성능이 저하
4. UPDATE는 변경 대상 컬럼이 인덱스에 없는 경우 성능에 영향이 없음
B. B트리 기반 인덱스 검색
1단계 : 브랜치 블록의 가장 왼쪽 값이 찾고자 하는 값보다 작거나 같으면 왼쪽 포인터로 이동
2단계 : 찾고자 하는 값이 브랜치 블록의 값 사이에 존재하면 가운데 포인터로 이동
3단계 : 오른쪽에 있는 값보다 크면 오른쪽 포인터로 이동
C. SQL Server의 클러스터형 인덱스
1. 인덱스의 리프 페이지가 곧 데이터 페이지
2. 인덱스 와 테이블이 결합되어 있는 구조
3. 리프 페이지의 모든 로우는 인덱스 키 칼럼 순으로 물리적으로 정렬되어 저장
D. 테이블 스캔과 인덱스 스캔
【 전체 테이블 스캔 】
1. 조건에 맞는 데이터를 찾기 위해 테이블의 모든 데이터를 검색
2. 한번의 요청으로 여러 블록을 읽음
【 인덱스 스캔 】
1. 인덱스를 구성하는 칼럼의 값을 기반으로 데이터를 추출하는 액세스
2. 한번의 요청에 한 블록씩 읽음
3. 구성 칼럼의 순서로 정렬되어 있기 때문에 인덱스를 경유하여 데이터를 읽으면 결과도 정렬되어 반환
4. 인덱스 구성과 ORDER BY가 동일하면 정렬 생략
E. 전체 테이블 스캔이 발생하는 이유
1. SQL문에 조건이 존재하지 않는 경우
2. SQL문의 주어진 조건에 사용 가능한 인덱스가 존재하지 않는 경우
3. 옵티마이저 선택
4. 인덱스를 사용할 수는 있지만, 조건을 만족하는 데이터가 많은 경우
F. 인덱스 스캔 방식 종류
【인덱스 유일 스캔(INDEX UNIQUE SCAN)】
1. 하나의 데이터를 추출
2. 중복 허용하지 않음
3. 구성 칼럼에 모두 ‘=‘로 값이 주어지면 결과는 1건
【인덱스 범위 스캔(INDEX RANGE SCAN)】
1. 1건 이상의 데이터를 추출
2. 유일 인덱스(UNIQUE INDEX) 구성 칼럼 모두에 대해 ‘=‘로 값이 주어지지 않은 경우
3. NON UNIQUE INDEX를 스캔하는 경우
【인덱스 역순 범위 스캔(INDEX RANGE SCAN DESCENDING)】
1. 인덱스 범위 스캔과 동일하며, 내림 차순으로 데이터를 읽는 방식
[용어/개념] SNMP MIB와 OID의 관계 및 정의 - OID 분석 사이트 소개
[TIP] Windows 10/11 포맷하는 방법 - 초기화하기, 주의사항