MySQL排序结果需要很长时间

Fel*_*zin 7 mysql performance

最近我一直在让MySQL挂起特定的查询.我有一张500,000多条记录的表格.以下是正在运行的查询:

SELECT*FROM itemsWHERE(itemlist_id = 115626)ORDER BY tableOrder DESC LIMIT 1

这是解释:

| 1 | 简单| 物品| 所有| NULL | NULL | NULL | NULL | 587113 | 用在哪里; 使用filesort |

这是process_list条目:

| 252996 | 根| localhost | itemdb | 查询| 0 | 排序结果| SELECT*FROM items WHERE(itemlist_id = 115642)ORDER BY tableOrder DESC LIMIT 1 |

知道什么可能导致此查询需要10分钟处理?当我手动运行时,它很快就完成了.(1排(0.86秒))

谢谢

Qua*_*noi 6

您需要创建索引items (itemList_id, TableOrder)并重写查询:

SELECT  *
FROM    items
WHERE   itemlist_id = 115626
ORDER BY
        itemlist_id DESC, tableOrder DESC
LIMIT 1
Run Code Online (Sandbox Code Playgroud)

第一个条件ORDER BY似乎是多余的,但它有助于MySQL选择正确的计划(不排序).