不可解なタイトルで申し訳ありません...私の問題:
最も単純化された形式で次のようになるmysqlクエリがあります。
SELECT * FROM table
WHERE _SOME\_CONDITIONS_
ORDER BY `id` DESC
LIMIT 50
この句がないLIMIT
と、クエリは約 50,000 行を返しますが、最初の 50 行だけに関心があります。ここで、ORDER BY
MySQL が一時テーブルを作成し、そこにすべての結果をロードし、50,000 個の結果を並べ替える必要があることを追加したため、最初の 50 個の結果を返すことができることに気付きました。
このクエリとそれを使用しないクエリのパフォーマンスを比較するORDER BY
と、1.8 秒と 0.02 秒という驚異的な違いが得られます。
それid
が主キーの自動インクリメントであることを考えると、私の問題にはエレガントな回避策があるはずだと思いました。ありますか?