基於成本的優化器
火花SQL可以使用一個基於成本的優化器(CBO)來提高查詢計劃。這是特別有用的查詢與多個連接。為此收集表和列統計信息是至關重要的,保持最新。
驗證查詢計劃
有幾種方法可以驗證查詢計劃。
解釋
命令
檢查如果計劃使用統計數據,使用SQL命令
磚運行時7。x,上圖:解釋
如果統計數據丟失,那麼查詢計劃可能不是最優的。
= =優化邏輯計劃= =總(s_store_sk),(s_store_sk,數(1)作為數(1)l),統計數據(sizeInBytes=20.0B,rowCount=1,提示=沒有一個)+ -項目(s_store_sk),統計數據(sizeInBytes=18.5MB,rowCount=1.62 e + 6,提示=沒有一個)+ -加入內心的,(d_date_sk=ss_sold_date_sk),統計數據(sizeInBytes=30.8MB,rowCount=1.62 e + 6,提示=沒有一個):- - - - - -項目(ss_sold_date_sk,s_store_sk),統計數據(sizeInBytes=39.1GB,rowCount=2.63 e + 9,提示=沒有一個):+ -加入內心的,(s_store_sk=ss_store_sk),統計數據(sizeInBytes=48.9GB,rowCount=2.63 e + 9,提示=沒有一個)::- - - - - -項目(ss_store_sk,ss_sold_date_sk),統計數據(sizeInBytes=39.1GB,rowCount=2.63 e + 9,提示=沒有一個)::+ -過濾器(isnotnull(ss_store_sk)& &isnotnull(ss_sold_date_sk)),統計數據(sizeInBytes=39.1GB,rowCount=2.63 e + 9,提示=沒有一個)::+ -關係(ss_store_sk,ss_sold_date_sk]拚花,統計數據(sizeInBytes=134.6GB,rowCount=2.88 e + 9,提示=沒有一個):+ -項目(s_store_sk),統計數據(sizeInBytes=11.7KB,rowCount=1.00 e + 3,提示=沒有一個):+ -過濾器isnotnull(s_store_sk),統計數據(sizeInBytes=11.7KB,rowCount=1.00 e + 3,提示=沒有一個):+ -關係(s_store_sk]拚花,統計數據(sizeInBytes=88.0KB,rowCount=1.00 e + 3,提示=沒有一個)+ -項目(d_date_sk),統計數據(sizeInBytes=12.0B,rowCount=1,提示=沒有一個)+ -過濾器((((isnotnull(d_year)& &isnotnull(d_date))& &(d_year=2000年))& &(d_date=2000年- - - - - -12- - - - - -31日))& &isnotnull(d_date_sk)),統計數據(sizeInBytes=38.0B,rowCount=1,提示=沒有一個)+ -關係(d_date_sk,d_date,d_year]拚花,統計數據(sizeInBytes=1786.7KB,rowCount=7.30 e + 4,提示=沒有一個)
重要的
的rowCount
統計查詢與多個連接尤為重要。如果rowCount
丟失,這意味著沒有足夠的信息來計算(也就是說,一些需要列沒有數據)。