簡體   English   中英

Hive查詢效率

[英]Hive Query Efficiency

你能幫我解決一下Hive Query Efficiency問題嗎? 我有兩個查詢正在解決同一個問題。 我只是想不通為什么一個比另一個快得多。 如果您知道,請隨時提供見解。 歡迎任何信息!

問題 :我正在嘗試檢查Hive鑲木桌中的一堆變量的最小值。

查詢 :我嘗試了兩個查詢,如下所示:

query 1

drop table if exists tb_1 purge;
create table if not exists tb_1 as
select 'v1' as name, min(v1) as min_value from src_tb union all
select 'v2' as name, min(v2) as min_value from src_tb union all
select 'v3' as name, min(v3) as min_value from src_tb union all
...
select 'v200' as name, min(v200) as min_value from src_tb
;

query 2

drop table if exists tb_2 purge;
create table if not exists tb_2 as
select min(v1) as min_v1
, min(v2) as min_v2
, min(v3) as min_v3
...
, min(v200) as min_v200
from src_tb
;

結果 :查詢2比查詢1快得多。大約需要5分鍾才能完成第二個查詢。 我不知道查詢1會花多長時間。 但是在我提交第一個查詢之后,甚至花了很長時間才對查詢作出反應,我的意思是通常在我提交查詢后,系統將開始分析並在終端中提供一些編譯信息。 但是,對於我的第一個查詢,在我提交之后,系統甚至不會對此作出反應。 所以我就把它殺死了。

你怎么看? 先感謝您。

查詢執行時間取決於您執行它的環境。

在MSSQL中

有些人喜歡你認為查詢執行類似於他們在一些理論資源中看到的算法,但在實際情況中,它依賴於其他事情。

例如,您的兩個查詢都具有在表上執行的SELECT語句,乍一看,它們需要讀取所有行,但數據庫服務器必須分析該語句以確定提取所請求數據的最有效方法。 這稱為優化SELECT語句。 執行此操作的組件稱為查詢優化程序 查詢優化器的輸入包括查詢,數據庫模式(表和索引定義)以及數據庫統計信息。 查詢優化器的輸出是查詢執行計划 ,有時稱為查詢計划或僅計划。 (請參閱有關查詢處理體系結構的詳細信息)

通過閱讀本文 ,您可以在MSSQL中看到執行計划,我認為通過查看兩個查詢的執行計划,您將更好地理解。

編輯(Hive)

Hive提供EXPLAIN命令,顯示查詢的執行計划。 該語句的語法如下:

EXPLAIN [EXTENDED|DEPENDENCY|AUTHORIZATION] query

Hive查詢將轉換為一系列階段。 階段本身的描述顯示了一系列運算符,其中包含與運算符關聯的元數據。

有關更多信息,請參閱LanguageManual Explain

有什么令人驚訝的? 第一個查詢必須讀取src_tb共200次。 第二個讀取數據並執行200次聚合。 它更快更難以理解。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM