3

我有模拟数据的查询及其关联的查询和查询计划(请参阅要点)。

表 lte_data_tenmillion 的行数为 10000000 表订阅者数据的行数为 100000

对于这两个表,subscriber_id 列中的行都没有空值。

我发现很难理解,为什么查询计划显示扫描的行数(在应用谓词后:subscriber_id is not null (type: boolean))正好是原始行数的一半。

订阅者表的过滤器运算符也是如此。

此外,如“文件输出运算符 [FS_20]”中所述,结果数据的总行数为 5500000。但是结果表中的实际行数为 2499723。

我可能错误地解释了查询计划。如果有人能清除我在查询计划和实际结果中观察到的不一致之处,我将不胜感激。

谢谢!

4

1 回答 1

0

统计数据并不新鲜。使用命令分析每个表,analyze table <table name> compute statistics;然后再次检查计划。还添加

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

在解释命令之前。

于 2016-09-19T19:15:53.547 回答