2014-03-02 87 views
0

我有兩種方法可以從兩個表中選擇MAX值,但不知道哪一個更好或更快。 我從mysql workbench但如果這兩個查詢檢查我越來越0.00 Sec執行時間從兩個表格中選擇MAX值:哪一個更好

首先查詢

SELECT MAX(s) from (
    SELECT sheetid s FROM csheets 
    UNION all 
    SELECT sheetid s FROM queueitems 
) as t 

解釋 enter image description here

第二個查詢

SELECT MAX(s) from (
    SELECT MAX(sheetid) s FROM csheets 
    UNION all 
    SELECT MAX(sheetid) s FROM queueitems 
) as t 

說明 enter image description here 所以問題是哪一個更好的速度?

+0

我估計不是使用'MAX',而是使用'by order by sheetid desc limit 1' –

+0

首先在'sheetid'列上爲兩個表創建索引 - > CREATE INDEX indexname1 ON csheets(sheetid)'CREATE INDEX indexname2 ON queueitems(sheetid)',這是必須的,因爲目前這兩個查詢都執行全表掃描。然後再次運行解釋併發布結果。 – krokodilko

回答

1

第二個會更好,因爲之前執行了聚合,所以臨時表上的空間比第一個查詢少一步。

但是看看執行計劃,用EXPLAIN。

+0

看什麼在解釋爲decisoin –

+0

我已經更新與解釋的問題,這可能會幫助更多得到適當的答案 –