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

MySQL-計算列で注文するときのパフォーマンス

    実際、そのクエリを最適化することはできません。

    計算値を使用して結果を並べ替えているため、インデックスを使用できません。 explainを使用する場合 クエリがどのように実行され、using temporaryを使用しているかを確認できます。 extraに表示されます 列。これは、クエリからのすべてのデータが、順序付けが実行される一時テーブルに格納されていることを意味します。

    クエリの最初の50一致のみが必要かどうかは関係ありません。最初にすべてのデータを取得し、それを一時テーブルにダンプし、そのテーブルで結果を並べ替えてから、最初の50一致を返す必要があります。

    ご想像のとおり、これは時間とメモリを消費する操作です。

    したがって、最適なオプションは、テーブルにインデックスを配置して、必要なすべての行をできるだけ速く取得し、phpで処理することです。 必要なデータを取得します。

    ちなみに、MySQL最適化ガイド をご覧ください。 。



    1. テーブルのすべての値をSQLの別のテーブルに挿入します

    2. SQLGroupByとOrderBy

    3. PostgresのGROUPBY-JSONデータ型に同等性はありませんか?

    4. テーブル式の基礎、パート8 – CTE、最適化の考慮事項の続き