Медленное выполнение Sql

У меня есть таблица, которая содержит не менее 60000 строк. Мой запрос просто базовый и выглядит примерно так:

SELECT `table`.name, `table`.age, `table`.points
FROM table
GROUP BY name, age
ORDER BY date
DESC
LIMIT 12

Результат как (Всего 12, запрос занял 1,2211 с), иногда это даже занимает 2 секунды, чтобы просто вернуть 12 строк.

Что нужно сделать, чтобы сделать мой запрос быстрее?

ПОЯСНИТЕ ЗАПРОС:

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

0

Решение

Это слишком долго для комментария.
Поможет индекс по дате, без этого он вынужден делать сканирование таблицы.
Кроме того, какова мощность имени, то есть количество отдельных имен, поделенных на количество строк? В случае, если оно мало, вы можете создать таблицу с этими различными именами и JOIN для этого с целью сканирования свободного индекса.
Для начала попробуйте составной индекс:

 ALTER TABLE t1 ADD KEY indexName (name,age,date)

Для более подробной информации положите EXPLAIN перед вашим запросом и отредактируйте ваш вопрос с результатами.

1

Другие решения

Возможно, вы захотите создать индексы в вашей базе данных SQL.
Если вы используете MYSQL, вы можете создать их следующим образом

ALTER TABLE TABLE_NAME ADD INDEX (COLUMN_NAME);

Для вашего случая это будет выглядеть так:

ALTER TABLE `table` ADD INDEX (name);
ALTER TABLE `table` ADD INDEX (age);
ALTER TABLE `table` ADD INDEX (points);

Вы также можете посмотреть на этот вопрос

0

По вопросам рекламы [email protected]