2015-08-13 70 views
0

我有問題,我的配置單元SQL查詢有時會導致全表掃描並且持續很長時間。因此,我想知道where語句的順序是否真的影響了查詢的性能。hive查詢中條件的順序是否影響查詢性能?

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

配置單元查詢在內部作爲MR作業執行。查詢的where子句應該被視爲過濾標準。所以它不應該對性能產生任何影響。

+0

但過濾地圖減少錯誤的順序確實有影響!?然而,使用配置單元我不是在自己構建map reduce語句 – Manuel

+0

@Manuel我認爲所有的過濾條件都將在一次map reduce任務中被同時考慮。它不應該像爲更多數量的過濾標準運行不同或更多數量的MR作業。 – YoungHobbit