最近我一直在让MySQL挂起特定的查询。我有一张500,000多条记录的表格。以下是正在运行的查询:
SELECT * FROM
items
WHERE(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秒))
由于
答案 0 :(得分:6)
您需要在items (itemList_id, TableOrder)
上创建索引并稍微重写一下查询:
SELECT *
FROM items
WHERE itemlist_id = 115626
ORDER BY
itemlist_id DESC, tableOrder DESC
LIMIT 1
ORDER BY
中的第一个条件可能似乎是多余的,但它有助于MySQL
选择正确的计划(不排序)。