안녕하세요. DB 초보라 혼자 공부하다 보니 너무 어려워 고수님들 도움을 청합니다.^^
일단 제가 궁금 한건 선택도에 관한 것 입니다.
제가 알고 있는 것은,
1. 컬럼에 nonclustered index 를 생성할 경우, 선택도가 좋은 컬럼에 index를 만들어야 한다.
2. 선택도 좋은지를 알 수 있는 방법은 통계를 보면 된다.
3. 해당 컬럼의 통계를 보는 방법중 하나는 dbcc show_statistics(table_name, index_name)
으로 알고 있습니다.
그럼, dbcc show_statistics 를 실행 했을 경우,
* 결과 데이터 중 어떤 것을 보고 선택도를 알 수 있는지 궁금 합니다.
제가 알고 있는 것은,
. 밀도(density) = 1 / distinct value 개수
. 선택도(Selectivity) = 찾을 데이터 / 전체 행 수
인데,
ㄱ. all density 컬럼에 나온 값이 선택도 인가요?
검색을 해보니 all density 가 선택도 라고도 하고, 밀도 라고도 하고... 어떤것이 맞는거죠?
ㄴ. 만약 all density 가 밀도라면 show_statistics(table_name, index_name) 실행 후 결과를 보고
'해당 컬럼이 선택도가 좋다' 라는 것을 어떻게 판단해야 하나요?
- 어떤 웹페이지에서는 '선택도가 0.43% 이하(table 마다 다를 수 있음) 일 경우, 인덱스를 걸어도 좋다..' 라고 하는데
all density 가 밀도라면, 선택도를 show_statistics 실행 후 결과를 보고 어떻게 계산 해야 하는 것인가요?
정말 헷갈리네요..
고수님들의 자세한 조언 부탁 드립니다.
꾸벅.
Comment 1
-
Alucard(강산아)
2013.05.27 22:08
http://www.sqler.com/558930