我有一个使用 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 种不同的排序选项,这意味着我必须创建一百多个索引来涵盖所有场景。
我阅读了有关索引合并的信息,我相信这会解决问题,因为我可以为您可以排序的每一列创建一个索引,但是我似乎无法让它在查询的“排序依据”部分工作。