我有一个包含至少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