반응형
SMALL
1. 선택도(Selectivity) : 전체 레코드 중에서 조건절에 의해 선택되는 레코드 비율
카디널리티 = 선택도 * 총레코드 수
인덱스 선택도란 ? 인덱스 컬럼을 모두 '='로 조회할때 평균적으로 선택되는 비율을 의미
선택도가 높은(카디널리티가 높은) 인덱스는 생성해봐야 테이블 액세스만 많이 발생함
(만든의미가 없음) 인덱스를 생성할때는 반드시~ 선택도 카디널리티 확인!!
* 카디널리티 = 1 : 해당컬럼 '=' 조건으로 조회 시 평균 1건 조회됨을 의미
--카드널리티 조회 쿼리 SELECT COUNT(*) AS NDV, MAX(CNT) AS MAX_CARD, MIN(CNT) MN_CARD, AVG(CNT) AS AVG_CARD FROM ( SELECT ORD_DT, SHOP_NO, COUNT(*) AS CNT FROM DEV.ORD_RANDOM WHERE (ORD_DT IS NOT NULL OR SHOP_NO IS NOT NULL) GROUP BY ORD_DT, SHOP_NO ); NDV MAX_CARD MN_CARD AVG_CARD ------------- ------------ ------------- --------------- 146000 154 65 102.739726 NDV : Number of Distinct Values (컬럼에 입력된 값의 종류 개수) |
2. 결합인덱스 컬럼 간 순서 정할 때 선택도 중요할까?
- 컬럼의 액세스 조건이라 어떤 컬럼이 먼저 오든 스캔범위는 같음
- 항상 사용하는 컬럼을 앞쪽에 두고 그중 '=' 조건 앞쪽에 위치 시키는 것 뿐~
!! 인덱스 생성 여부를 결정할때는 선택도가 매우 중요
!! 컬럼간 순서를 정할 때는 컬럼의 선택도보다는 필수조건 여부, 연산자 형태가 더더더한 판단 기준임~
728x90
'DB 관리 TIP' 카테고리의 다른 글
[MS-SQL] 실행창(cmd) 접속 및 문자열 날짜 변환 (0) | 2021.12.24 |
---|---|
[ROLE에 부여된 권한 확인] (0) | 2021.12.23 |
[ORACLE]인덱스 스캔 방식 (0) | 2021.07.05 |
[ORACLE] ROWID 특징 (0) | 2021.07.04 |
[ORACEL] 인덱스 특징 (0) | 2021.07.04 |