1
У меня есть таблица в БД MySQL, где регистрируются определенные события. Теперь я хочу знать, какое событие произошло бы в последний час для определенного домена объекта:MySQL: ORDER BY или GROUP BY slow?
SELECT entity_id, COUNT(entity_id) number
FROM event_log
WHERE domain_id=%s AND event_type='%s' AND time>DATE_SUB(NOW(), INTERVAL 1 HOUR)
GROUP BY entity_id
ORDER BY number ASC;
Этот запрос занимает около 3 секунд на столе с примерно 300,000 строк. Есть ли способ значительно ускорить его? Я делаю что-то неправильно?
Попробуйте добавить индекс на 'time' или еще лучше, на' domain_id, event_type, time, entity_id' –
@The Scrum Meister: Можете ли вы поместить этот комментарий в ответ. (Просто добавление индекса для 'time' ускорило запрос в 100 раз ...) – EricSchaefer
Имена типа' number' и 'time' делают меня зудом из-за различных диалектов SQL. Я бы назвал поле «время». _ (Нет критики) _ –