2013-03-07 12 views
5

質問は簡単です。どのクエリが高速になります。パフォーマンスの違い:選択した上位1つの順序を選択してくださいmin(val)

SELECT TOP 1 value FROM table ORDER BY value 

または

SELECT TOP 1 MIN(value) FROM table 

我々は2例、ケース1値ではありません、インデックスとインデックス付きケース2を持っていると仮定することができます。
洞察力があれば幸いです。ありがとう!索引が存在しない場合に

+6

「MIN」がすでに1つの値を返すので、「TOP 1」を呼び出す必要はありません。 –

+0

diffrenceがある場合は、使用するdbmsに依存しますので、あなたがintrestedになっているものを追加したいかもしれません。 –

+1

2つのopeartionsは等しくありません。例えば、 'TOP ' 1 '+ 'order by'は' NULL'を返し、 'MIN 'は最小の非ヌル値を返します。 – Magnus

答えて

9

  • MIN(値)が1回の走査でO(N)時間で実施されるべきです。
  • TOP 1 ... ORDER BYは、指定されたソートのためにO(N Log N)時間を必要とします(DBエンジンがインテントを読むのに十分スマートでない限り、本番コードでは頼りになりません)。

インデックスが存在する:

  • 両方がインデックスを使用して、唯一のO(1)時間を必要とすべきです。
+0

ありがとうございます。私が探していたそのような答え! – www

+0

私は "Approved"が来たのを見ました - それはいつも十分な感謝です。 –

関連する問題