2016-09-19 83 views
3

我有一個查詢及其關聯的query and query plan(請參閱要點)的模擬數據。理解配置單元查詢計劃

在表lte_data_tenmillion行數是千萬 表中的用戶數據的行數是100000

對於兩個表沒有行具有在subscriber_id列中的空值。

我發現很難理解爲什麼查詢計劃顯示掃描的行數(應用謂詞後:subscriber_id不是null(類型:布爾值))恰好爲原始行數的一半。

類似的情況是用戶表的過濾器運算符。

此外,所得的數據行的總數,「文件輸出操作符[FS_20]」是5500000.然而,在所得到的表中的行的實際數目是2499723.

我可能是下如所提到的錯誤地解釋查詢計劃。如果有人能夠澄清我在查詢計劃中觀察到的不一致性以及實際結果,我將非常感激。

謝謝!

回答

0

統計數據並不新鮮。使用analyze table <table name> compute statistics;命令分析每個表,然後再次檢查計劃。 同時加上

set hive.stats.fetch.column.stats=true; 
set hive.stats.fetch.partition.stats=true; 

before explain命令。

+0

我在運行解釋查詢之前發出了這個命令。不幸的是,我看到數字沒有變化。 –