안녕하세요
마푸입니다.
DB를 처음 공부하다보면 여러가지 단어들이 눈에 들어오는데요
그중에서 자주 언급되는 단어인 선택도 와 밀도에 대해서 알아보겠습니다.
선택도(Selectivity)는 cardinality와 밀접하게 연관이 있습니다.
(* 자세한건 카디넬리티편에서 알아보도록 할께요)
밀도는 Density를 뜻합니다.
--
-- 선택도와 밀도
--
1. 선택도
select 전화번호 from 학급 where 이름 = '홍길동'
--> 선택도가 높다
select 전화번호 from 학급 where 이름 between '홍길동' and '임꺽정'
--> 선택도가 낮다
데이터를 조회 할때 선택도란
테이블의 전체 행 중에 조회되는 행의 비율을 말하는 것으로 조회되는 행의 비율이 적으면 적을수록 선택도가 높고,
조회 되는 행의 비율이 많으면 많을 수록 선택도가 낮다고 표현한다 .
테이블의 데이터를 조회할때 , 이러한 선택도가 매우 중요한 이유는 선택도에 따라서 인덱스의 사용이 구분되기 때문이다.
포인트 질의 (1: 1)의 경우 클러스트 인덱스와 넌클러스트 인덱스 모두 유용하게 동작한다.
하지만 , 범위질의의 경우 선택도가 낮다면 클러스터드 인덱스는 인덱스를 사용해서 seek로 검색하지만 넌클러스터는 Table Scan보다
효율이 떨어지게된다 .
2. 밀도
'박'자로 시작되는 데이터는 많이 검색되므로 차지하는 밀도가 높다
'표'자로 시작되는 데이터는 하나뿐이므로 차지하는 밀도가 낮다
즉, 선택도가 높으면 밀도는 낮고, 선택도가 낮으면 밀도는 높다.
반응형
'Database' 카테고리의 다른 글
[MySQL] show processlist 모니터링 하기 (0) | 2017.02.22 |
---|---|
[MySQLdb] python에서 mysql db api 설치하기 (0) | 2017.02.22 |
[쿼리튜닝] 쿼리의 실행 횟수를 줄이자 (0) | 2017.02.21 |
[MySQL] 복제 (Replication)에 대해서 (0) | 2017.02.14 |
[MySQL] Binary Log (0) | 2017.02.14 |