performance - hive 查询中 where 条件的顺序是否会影响查询性能?

标签 performance hadoop hive hiveql

我的 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/

相关文章:

.net - 将 IEnumerable<char> 转换为字符串的最佳方法?

c# - Entity Framework 性能问题

hadoop - 使用自定义换行符加载 CSV

hadoop - 在本地机器上运行 Dataproc BigQuery 示例

macos - 在 Mac 上以伪分布式模式设置 Hadoop

regex - Hive:使用正则表达式拆分字符串

hadoop - 检查两个表是否相等

.net - 这些算法中哪一个在生成 1..n 范围内的 N 个唯一随机数的性能和顺序方面更好?

C# 静态类成员和 System.Windows.Controls.Image 性能问题

mysql - sqoop从mysql导入到hive,用户名被更改(用户访问被拒绝)