2011-04-05 51 views
0

只是因爲在聽到同事的​​困境後才變得好奇。分組之前排序,反之亦然:哪個更快?

在一般生產ENVIRON查詢,會是更快排序第一,首先分揀之前分組,或組之前?

是的,一個一般生產環境。我知道這取決於很多事情:查詢的行數,初始結果集的行數,列的數量,我使用的數據庫模式,明天是否會下雨等等,我知道,我知道。我是說一般,因爲我沒有任何界限明確地設置我的好奇心。

讓我們說,根據你的經驗,這往往是更快?

+1

我從來沒有試過比較它們,但是如果你看到不同,我會非常驚訝。 SQL引擎不會爲你優化這個嗎? – drysdam 2011-04-05 13:52:18

+0

嘎,想要關閉不是一個真正的問題。答案:它取決於數據庫,它包含什麼,它的模式,索引等。 – Will 2011-04-05 14:08:28

+2

**性能問題是無法解析的,沒有具體細節!**您也可以問「哪個更快,5速手動或6速自動?」沒有說明,你知道,你在談論什麼車。 – JNK 2011-04-05 14:19:30

回答

3

要進行分組,首先需要排序(引擎會執行此操作)。如果你嘗試先進行排序,那麼結果不一定是排序:

select a, sum(b) 
from (
    select a, b 
    from c 
    order by a 
    ) d 
group by a 

所以,不要試圖先進行排序,因爲你將需要反正後進行排序,它只會使你的代碼混亂。

+0

雖然這個問題沒有多大意義(甚至對我來說),但我不得不說這是我正在尋找的那種答案。謝謝。 – 2011-04-05 14:31:05