MySQLオプティマイザは、最初に結合順序/方法を決定し、次に、選択した結合順序について、インデックスを使用して並べ替えを回避できるかどうかを確認します。この質問の遅いクエリでは、オプティマイザはBlock-Nested-Loop(BNL)結合を使用することを決定しました。
BNLは通常、テーブルの1つが非常に小さい(そして制限がない)場合にインデックスを使用するよりも高速です。
ただし、BNLを使用すると、行は必ずしも最初のテーブルで指定された順序になるとは限りません。したがって、LIMITを適用する前に、結合の結果を並べ替える必要があります。
set optimizer_switch = 'block_nested_loop=off';
でBNLをオフにできます