我有一個包含至少60,000行的表。我的查詢僅僅是基本的,它是這樣的:緩慢的SQL執行
SELECT `table`.name, `table`.age, `table`.points
FROM table
GROUP BY name, age
ORDER BY date
DESC
LIMIT 12
結果是一樣(12總計,查詢花費1.2211秒),有時甚至還需要2秒只返回12行。
應該做些什麼來使我的查詢更快?
EXPLAIN QUERY:
id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
1 Extra table ALL NULL NULL NULL NULL 65704 Using temporary; Using filesort
如果你有性能問題,讓MySQL [EXPLAIN](http://dev.mysql.com/doc/refman/5.6/en/explain.html)給你做什麼工作。正如@SteelBrain所指出的那樣:在很多情況下,索引對於提高性能非常重要。請添加您的表的EXPLAIN和CREATE TABLE語句的輸出。 – VMai 2014-09-20 18:24:27
並刪除您的ORDER BY,這與此聲明完全沒有任何意義。 – VMai 2014-09-20 18:25:54
請注意,「points」列中的值不是每個組的最新值。這是一個不確定的。請閱讀[MySQL擴展到GROUP BY](http://dev.mysql.com/doc/refman/5.6/en/group-by-extensions.html)。如果你不能在積分上使用聚合函數,那麼你可以使用子選擇或左連接。 – VMai 2014-09-20 18:32:45