선택도(Selectivity)
- 전체 대상 레코드 중에서 특정 조건에 의해 선택될 것으로 예상되는 레코드 비율을 말한다.
선택도 -> 카디널리티 -> 비용 -> 액세스 방식, 조인 순서,. 조인 방법 등 결정
1 1
선택도 = --------------------- = --------------
Distinct Value 개수 num_distinct
카디널리티 (Cardinality)
- 키다널리티(Cardinality)는 특정 액세스 단계를 거치고 나서 출력될 것으로 예상되는 결과 건수를 말하며, 아래와 같이 총 로우 수에 선택도를 곱해서 구한다.
카디널리티 = 총 로우 수 X 선택도
선택도, 카디널리티가 중요한 이유
- 하나의 키값에 여러개의 row가 맵핑이 되는 경우에는 SELECT시 인덱스를 안타고 Full-Scan을 타는 경우가 있을수가 있다. 옵티마이저의 엑세스 방식, 조인 순서를 결정을 하게 된다.
- 즉. 정확한 수치를 계산하는 것 보다는 인덱스의 효율성을 아는 것이 중요하기 때문에 선택도, 카디널리티가 중요하다.
- 복합인덱스를 만들때 조건을 통해 나오는 데이터가 카디널리티가 낮을수록 좋다.
Reference
- http://wiki.gurubee.net/pages/viewpage.action?pageId=4948754
'Database > MySQL' 카테고리의 다른 글
Mysql Query Plan (0) | 2018.07.24 |
---|---|
Mysql Index HInts (0) | 2018.07.24 |
Group By 쿼리의 활용 (0) | 2018.06.09 |
MySQL 기본 Query 정리 (0) | 2018.02.11 |
커버링 인덱스 (0) | 2018.02.10 |