最悪の場合、MIN()
を使用して、インデックス付けされていないフィールドを表示します。 テーブルの1回のフルパスが必要です。 SORT
を使用する およびLIMIT
ファイルソートが必要です。大きなテーブルに対して実行すると、知覚されるパフォーマンスに大きな違いが生じる可能性があります。事例データポイントとして、MIN()
SORT
の間に.36秒かかりました およびLIMIT
開発サーバーの106,000行のテーブルに対して0.84秒かかりました。
ただし、インデックス付きの列を表示している場合は、違いに気付くのが難しくなります(つまり、どちらの場合もデータポイントが0.00秒になることはありません)。ただし、explainの出力を見ると、MIN()
のように見えます。 SORT
に対して、インデックスから最小値(「最適化されたテーブルを選択」および「NULL」行)を単純に抽出できます。 およびLIMIT
それでも、インデックスの順序付きトラバーサル(106,000行)を実行する必要があります。実際のパフォーマンスへの影響はおそらくごくわずかです。
MIN()
のようです 進むべき道です-最悪の場合はより速く、最良の場合は区別がつかず、標準のSQLであり、取得しようとしている値を最も明確に表現します。 SORT
を使用しているように見える唯一のケース およびLIMIT
mson
のように、望ましいでしょう。 前述のように、任意の列から上位または下位のN値を見つける一般的な操作を記述していて、特殊な場合の操作を書き出す価値はありません。