7


3

MySQLのソート結果に時間がかかる

最近、特定のクエリでMySQLがハングするようにしました。 500,000件以上のレコードを持つテーブルがあります。 実行中のクエリは次のとおりです。

_ SELECT * FROM items WHERE(itemlist_id = 115626)ORDER BY tableOrder DESC LIMIT 1 _

ここに説明があります:

_ | 1 | SIMPLE | items | ALL | NULL | NULL | NULL | NULL | 587113 | Using where; Using filesort | _

そして、ここにprocess_listエントリがあります:

_ | 252996 | root | localhost | itemdb | Query | 0 | Sorting result | SELECT * FROM items WHERE (itemlist_id = 115642) ORDER BY tableOrder DESC LIMIT 1 | _

このクエリの処理に10分かかる原因は何ですか? 手動で実行すると、すぐに完了します。 (1行セット(0.86秒))

ありがとう

1 Answer


6


`items(itemList_id、TableOrder)`にインデックスを作成し、クエリを少し書き換える必要があります。

SELECT  *
FROM    items
WHERE   itemlist_id = 115626
ORDER BY
        itemlist_id DESC, tableOrder DESC
LIMIT 1

ORDER BY`の最初の条件は冗長に見えるかもしれませんが、それは MySQL`が正しいプラン(ソートしない)を選択するのに役立ちます。