sql >> データベース >  >> RDS >> Mysql

MIN/MAXとORDERBYおよびLIMIT

    最悪の場合、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値を見つける一般的な操作を記述していて、特殊な場合の操作を書き出す価値はありません。



    1. PostgreSQL 12:K最近傍空間で分割された一般化された検索ツリーインデックスの実装

    2. Androidルームライブラリがアセットからデータベースをコピーできません

    3. 初心者向けのSQLSUM()

    4. OptimaDataとVidaXLとの交流会のためにアムステルダムに参加してください