我有一個系統使用order by來將數據返回給用戶界面;用戶可以以任何順序從十幾種不同的排序選項中進行選擇。MySQL使用多個索引的訂單
我有查詢
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種不同的排序選項,這意味着我將不得不創建超過一百個索引來涵蓋所有場景。
我閱讀了關於索引合併的問題,我相信這樣可以解決問題,因爲我可以爲可以排序的每列創建一個索引,但是我似乎無法讓它在「order by」部分工作查詢。
您是否有真正的問題? – JohnFx