ユーザー インターフェイスにデータを返すために order by を使用しているシステムがあります。ユーザーは、さまざまな並べ替えオプションから任意の順序で選択できます。
クエリがあります
explain extended select t.* from task t order by create_date, due_date limit 5;
+------+-------------+-------+------+---------------+------+---------+------+--------+----------+----------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+------+-------------+-------+------+---------------+------+---------+------+--------+----------+----------------+
| 1 | SIMPLE | t | ALL | NULL | NULL | NULL | NULL | 331233 | 100.00 | Using filesort |
+------+-------------+-------+------+---------------+------+---------+------+--------+----------+----------------+
1 row in set, 1 warning (0.00 sec)
create_date と due_date にインデックスがあります。複数列のインデックスを作成できることはわかっています。ただし、約 12 の異なる並べ替えオプションがあるため、すべてのシナリオをカバーするには 100 を超えるインデックスを作成する必要があります。
インデックスのマージについて読みましたが、並べ替えることができる各列のインデックスを作成できるため、問題は解決すると思いますが、クエリの「順序付け」部分では機能しないようです。