2016-09-19 7 views
3

시뮬레이션 된 데이터에 대한 쿼리 및 해당 query and query plan (요지 참조)이 있습니다.하이브 쿼리 계획 이해

테이블 lte_data_tenmillion 행의 수는 행의 두 테이블 없음이 subscriber_id 열에 널값이없는 대한 테이블 가입자 데이터의 행의 수는 100,000

이다 10000000 이다.

쿼리 계획에 왜 predicate : subscriber_id가 null이 아닌지 (유형 : 부울)을 적용한 후 스캔 한 행 수가 원본 행 수의 절반에 불과하다는 것을 알기가 어렵습니다.

subscriber 테이블의 필터 연산자도 마찬가지입니다. "파일 출력 연산자 [FS_20]"결과 테이블의 행의 실제 개수 2499723.

I 될 수있다 그러나 5500000.이다하에 바와 같이 또한

결과 데이터의 행의 수, 쿼리 계획을 잘못 해석합니다. 쿼리 계획과 실제 결과에서 내가 관찰 한 불일치를 해결할 수 있다면 고맙겠습니다.

감사합니다.

답변

0

통계가 최신 정보가 아닙니다. analyze table <table name> compute statistics; 명령을 사용하여 각 테이블을 분석 한 다음 계획을 다시 확인하십시오. 또한 explain 명령 앞에

을 추가하십시오.

+0

설명 쿼리를 실행하기 전에이 명령을 실행했습니다. 불행하게도 나는 그 숫자에 변화가 없음을 알았다. –