hive 查询中 where 条件的顺序是否会影响查询性能?
Does the order of where conditions in hive queries has impact on the query performance?
我遇到的问题是我的配置单元 SQL 查询有时会导致完整的 table 扫描并持续很长时间。因此我想知道 where 语句的顺序是否真的对查询性能有影响。
例如查询具有基于日期构建的主键和区分对象的辅助键。我只想分析昨天的数据,这应该比完整 table 扫描快得多。
查询 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 快?
在我看来,这应该不会对查询优化器产生任何影响。
配置单元查询在内部作为 MR 作业执行。查询的 where 子句应被视为过滤条件。所以它应该不会对性能有任何影响。
我遇到的问题是我的配置单元 SQL 查询有时会导致完整的 table 扫描并持续很长时间。因此我想知道 where 语句的顺序是否真的对查询性能有影响。
例如查询具有基于日期构建的主键和区分对象的辅助键。我只想分析昨天的数据,这应该比完整 table 扫描快得多。
查询 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 快?
在我看来,这应该不会对查询优化器产生任何影响。
配置单元查询在内部作为 MR 作业执行。查询的 where 子句应被视为过滤条件。所以它应该不会对性能有任何影响。