當我在配置單元中運行VirtualBox Sandbox
中的查詢時。我覺得Select count(*)
比Select *
慢得多。爲什麼選擇計數(*)比配置單元中的選擇*要慢
任何人都可以解釋背後發生了什麼?
爲什麼這種延遲發生?
當我在配置單元中運行VirtualBox Sandbox
中的查詢時。我覺得Select count(*)
比Select *
慢得多。爲什麼選擇計數(*)比配置單元中的選擇*要慢
任何人都可以解釋背後發生了什麼?
爲什麼這種延遲發生?
這是因爲數據庫正在使用羣集主鍵,因此查詢會逐個搜索每個鍵的行,而不是從索引搜索行。
運行optimize table
。這將確保按排序順序物理存儲數據頁面 。這可以想見在集羣主鍵上加速範圍掃描 。
僅在change_event_id 列上創建附加的非主索引。這將在index頁面中存儲該列的副本,其中 要快得多。創建後,檢查解釋計劃, 確保它使用新的索引
select * from table
它可以是一個地圖只有工作,但
Select Count(*) from table
它可以是一個Map和Reduce任務
希望這會有所幫助。
好的,謝謝,你能解釋我的代碼是如何工作的嗎?是否有任何方法獲得執行時間?我的工作是什麼意思? – Haris
配置單元查詢可以執行的操作有三種類型。
按照最便宜,最快到更貴,更慢的順序,他們是。
配置單元查詢可以是僅限元數據的請求。
顯示錶格,描述表格都是例子。在這些查詢中,配置單元進程在元數據服務器中執行查找。元數據服務器是一個SQL數據庫,可能是MySQL,但實際的數據庫是可配置的。
配置單元查詢可以是hdfs get請求。 從表中選擇*就是一個例子。在這種情況下,配置單元可以通過執行hdfs操作來返回結果。 hadoop fs -get,或多或少。
配置單元查詢可以是Map Reduce作業。
Hive必須將jar發送到hdfs,jobtracker將任務排隊,tasktracker執行任務,最終數據將被放入hdfs或發送給客戶端。
Map Reduce作業也有不同的可能性。
它可以是一個Map only作業。 從表中選擇*,其中id> 100,例如,可以將所有該邏輯應用於映射器。
它可以是一個Map和Reduce作業, 從表中選擇min(id); 從id按表格順序選擇*;
它也可以導致多個地圖減少通行證,但我認爲上面總結了一些行爲。
東西告訴我,AlexHenderson_v1.00回答了錯誤的問題。 –
沒有。評論必須在我的回覆後進行編輯。有些事告訴我你拼錯了我的名字。 –