2014-04-12 3 views
2

이름, 주소 및 DOB를 포함한 다양한 사람들의 인구 통계 정보를 저장하는 FANS 테이블이 있습니다. 테이블 자체에는 7,655 개의 데이터 행이 있습니다. CITY 열에 하나의 INDEX를 만들었습니다. 나는 테이블에 40 개의 유일한 도시가 있다는 것과 NULL 값이 없다는 것을 확실히 알고 있습니다. 최적화 도구가 INDEX를 사용하기 시작할 때 간단한 실험을 실행하려고합니다.Oracle SQL Developer : 선택성 계산

SELECT CITY 
FROM FANS 
WHERE CITY BETWEEN 'APOLLO BEACH' AND 'BRANDON'; 

내가 MySQL의에서 이전 배운 선택도 = 카디/기록 카디널리티는 인덱스의 고유 값의 수있을 것 * 100 %의 수.

SQL Developer에서 "Explain Plan"을 실행하면 카디널리티가 500이됩니다. 따라서 올바른 계산은 500/7,655 * 100 %가됩니까?

+0

아마도 oracle 수식이 MySQL 수식과 다릅니다. –

+0

https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:40230704959128 – OldProgrammer

답변

1

Oracle 쿼리 계획의 cardinality은 옵티마이 저가 계획의 특정 단계에서 반환 될 것으로 예상되는 행 수입니다. 따라서, 옵티마이 저가 테이블의 행 중 500/7655 = 6.53 %가 술어와 일치 할 것으로 추정합니다. 40 개 CITY 값이 균일하게 분포하지 않는 경우

, 당신은 최적화가 더 정확한 카디널리티 예측을하는 데 도움이 CITY 열에 히스토그램을 갖고 싶어한다.

관련 문제