我的 Hive SQL 查询有时会导致全表扫描并持续很长时间。因此我想知道 where 语句的顺序是否真的会影响查询的性能。
例如查询具有基于日期构建的主键和区分对象的辅助键。我想只分析昨天的数据,这应该比全表扫描快得多。
查询 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 快?
在我看来,这不应该对查询优化器产生任何影响。
最佳答案
Hive 查询在内部作为 MR 作业执行。查询的 where 子句应被视为过滤条件。所以它应该不会对性能产生任何影响。
关于performance - hive 查询中 where 条件的顺序是否会影响查询性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31988103/