2013-10-17 80 views
1

我想更好地瞭解如何在配置單元或MySQL中實現查詢,以優化它們以節省運行時間。MySQL和Hive查詢實現

假設我這樣做對鍵「name」兩個表的INNER JON操作,我只想要排在那裏的名字等於「隨機」

SELECT * from tbl1 JOIN tbl2 on tbl2.name = tbl1.name where tbl1.name = 'random'; 

現在在執行什麼是序列事件: 1.是否在tbl1上過濾名稱=「隨機」,然後是JOIN操作? 2.是否加入表格,然後根據name =「random」進行過濾?

我認爲選項1更好,因爲我們將處理更少的JOIN數據,它應該更快。任何專家的想法?

UPDATE1:

將答案是一樣的,如果我修改我的查詢到這一點:

(SELECT * FROM tbl1 where tbl1.name='random) tbl1_1 JOIN tbl2 on tbl2.name=tbl1_1.name 

回答

1

是的,你是正確的。首先在tbl1上過濾name =「random」,然後執行JOIN操作。這將防止不必要的加盟記錄

加入您可以使用EXPLAIN關鍵字來獲取執行計劃

+0

怎麼樣,如果我修改我的查詢到這一點:「(SELECT * FROM TBL1其中tbl1.name =」隨機) tbl1_1在tbl2.name上加入tbl2 = tbl1_1.name' – Richeek

+0

@Newbie: - 更新了我的回答。搞錯了!! –

+0

謝謝!你的意思是這兩個查詢(見我的更新)是等價的。我會等待更多的時間......然後接受你的答案 – Richeek