MySQL排序结果需要很长时间

时间:2010-02-19 16:13:30

标签: mysql performance

最近我一直在让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秒))

由于

1 个答案:

答案 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选择正确的计划(不排序)。