配置单元查询中的条件的顺序是否会影响查询性能?

时间:2015-08-13 12:20:53

标签: performance hadoop hive hiveql

我遇到的问题是,我的hive SQL查询有时会导致全表扫描并持续很长时间。因此,我想知道where语句的顺序是否真的会对查询的性能产生影响。

E.g。该查询具有日期的主键构建和区分对象的辅助键。我只想分析昨天的数据,这应该比全表扫描快得多。

查询1:

SELECT 
    primarykey, 
    COALESCE(SUM(param1),0L), 
    COALESCE(SUM(param2),0L), 
    param3 
FROM 
    Table 
WHERE
    param1 = "abc" AND
    param2 > 0 AND
    primarykey = yesterdaysdate
GROUP BY 
    param3;

查询2:

SELECT 
    primarykey, 
    COALESCE(SUM(param1),0L), 
    COALESCE(SUM(param2),0L), 
    param3 
FROM 
    Table 
WHERE
    primarykey = yesterdaysdate AND
    param1 = "abc" AND
    param2 > 0
GROUP BY 
    param3;

查询2是否可能比查询1更快?

在我看来,这不应该对查询优化器产生任何影响。

1 个答案:

答案 0 :(得分:1)

hive查询在内部执行为MR作业。应将查询的where子句视为过滤条件。所以它不应该对性能产生任何影响。