Hive Sql 優化 謂詞下推

2021-10-09 00:04:27 字數 969 閱讀 7167

謂詞下推的概念其實出現在sql中,在關聯查詢時(join,left join ,right join),因為涉及兩個大表之間的關聯(特別是在hive)造成資源消耗會比較大,因為建議在join之前先將兩個表進行過濾(hive 裡指的是在map端進行過濾),系統會進行部分優化,但sql需要遵守ppd規則,所謂下推可以理解成優化(只有滿足才能進行優化)。

一句話說完:不影響結果的情況下,盡量將過濾條件提前執行。(記得小表join大表)

preserved row table:保留行表

外部聯接中必須返回所有行的表。

對於left join,這是左表;對於right join,這是右表;對於full join,兩個表都是保留的行表。

null supplying table:空值填充表

這是在不匹配的行中為其列填充空值的表。

對於left join,這是右表;對於right join,這是左表;對於full join,兩個表都是空值填充表。

during join predicate:連線謂詞

join語句中的on部分

after join predicate:後置連線詞

join語句後的where

1、連線謂詞(on)不能下推保留行表。

2、後置連線詞(where)不能下推到空值填充表

1、對於 join (inner join)、full outer join,條件寫在 on 後面,還是 where 後面,效能上面沒有區別;

2、對於 left join ,右表過濾條件寫在 on 後面、左表過濾條件寫在 where 後面,效能上有提高;

3、對於 right join,左表過濾條件寫在 on 後面、左表過濾條件寫在 where 後面,效能上有提高;

4、存在unix_timestamp()、rand()不確定函式時,無法實現下推

MySQL 謂詞下推

優化關係 sql 查詢的一項基本技術是,將外層查詢塊的 where 子句中的謂詞移入所包含的較低層查詢塊,從而能夠提早進行資料過濾以及有可能更好地利用索引。有表 t student student id,student name,student age t score score id,studen...

MySQL之謂詞下推

在sql中,謂詞就是返回boolean值即true或者false的函式,或是隱式轉換為boolean的函式。sql中的謂詞主要有 lkie between is null is not null in exists 謂詞下推的基本思想即 將過濾表示式盡可能移動至靠近資料來源的位置,以使真正執行時能直...

hive sql優化整理

hive sql優化方法引數一些整理,方便快速查詢使用 1.map數量與reduce數量的控制 輸入檔案大小指實際檔案大小,與檔案格式textfile,orc等無關,壓縮的檔案格式會小很多設定引數要適當調整 map數量控制 set hive.input.format org.apache.hadoo...