我遇到的问题是,我的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更快?
在我看来,这不应该对查询优化器产生任何影响。
答案 0 :(得分:1)
hive查询在内部执行为MR作业。应将查询的where子句视为过滤条件。所以它不应该对性能产生任何影响。