最近我一直在让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
itemsWHERE(itemlist_id = 115642)ORDER BY tableOrder DESC LIMIT 1 |
知道什么可能导致此查询需要10分钟处理?当我手动运行时,它很快就完成了.(1排(0.86秒))
谢谢
您需要创建索引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选择正确的计划(不排序).