반응형
📝액세스 전략 (Access Methods)
Loose Index Scan
INDEX (category)
SELECT DISTINCT category FROM product;
- DISTINCT / GROUP BY 최적화
- 동일 category값이 여러개 있어도 가장 첫 leaf 엔트리만 읽고 건너뛴다. (모든 row 스캔 하지 않고 group key만 읽음)
Covering Index (Index Lookup)
INDEX (category, price);
SELECT category, price FROM product WHERE category = 'A';
- 실제 테이블(클러스터 데이터)을 읽지 않고 인덱스만으로 결과를 돌려주는 방식입니다.
- 엄청나게 빠름 (랜덤 I/O 사라짐)
Index Range Scan (Bounded)
SELECT * FROM Product WHERE price BETWEEN 100 AND 200
- 인덱스에서 특정 부분만 탐색하는 기본적인 패턴 (구간조회)
Index Range Scan (Unbounded)
SELECT * FROM Product WHERE price >= 100
- 구간조회와 다르게 시작 또는 끝만 존재한다.
Index Condition Pushdown (ICP)
INDEX (category, price);
SELECT * FROM WHERE category = 'A' AND price > 100 AND name LIKE 'K%';
- WHERE 조건을 인덱스 레벨에서 먼저 filtering 해주는 최적화해주는 작업이다.
일반적으로 ICP기술이 없으면 category 먼저 처리후 선별 row 기반으로 데이터 직접 접근 후에 나머지 조건을 처리한다.
하지만 ICP 기술이 있는 경우는 인덱스 레벨에서 category, price 둘다 필터링한 이후에 테이블 접근을 한다
반응형
'[Database] > [MySql]' 카테고리의 다른 글
| [MySql][Database] MySQL 실행 전략 (Execution Strategies) - 조인 전략 (Join Methods) (Hash Join, Nested Join) | 정렬 전략 (Sort Methods) (Filesort) (0) | 2025.12.11 |
|---|---|
| [MySql][Database] 데이터베이스 뷰테이블 생성, 삭제, 수정 (0) | 2022.06.24 |
| [MySql][Database] 데이터베이스 CSV 파일 읽어서 데이터베이스에 넣기 (1) | 2022.06.23 |
| [MySql][Database] 데이터베이스 테이블 스키마 구조 변경 (CREATE OR REPLACE) (1) | 2022.06.23 |
| [MySql][Database] 데이터베이스 트리거(Trigger) (0) | 2022.06.23 |