2016-09-19 86 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

我在运行解释查询之前发出了这个命令。不幸的是,我看到数字没有变化。 –