У меня есть таблица, содержащая не менее 60 000 строк. Мой запрос только основной, и это что-то вроде этого:Slow Sql Execution
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
И удалите ORDER BY, это не имеет никакого смысла с этим утверждением. – VMai
Обратите внимание, что значение в столбце 'points' не является самым новым для каждой группы. Это неопределенный. Пожалуйста, прочитайте [Расширения MySQL для GROUP BY] (http://dev.mysql.com/doc/refman/5.6/en/group-by-extensions.html). Если вы не можете использовать агрегированную функцию в точках, вы можете использовать подзапрос или левое соединение. – VMai