Я пытаюсь выяснить, было ли последнее действие для пользователя за последние 24 часа и не выполнено (это программное обеспечение, позволяющее узнать, какие люди все еще находятся в здании в случае чрезвычайной ситуации). В таблице около 2 миллионов строк, у нас около 3000 пользователей.
Единственное решение, которое я нашел, было ниже, оно работает, но проблема в том, что это занимает 15 секунд ...
SELECT TIME, firstname, lastname, dept
FROM DAY
WHERE event_point_id IN (20, 22, 24, 26, 28, 30)
AND id IN (SELECT MAX(id)
FROM DAY
GROUP BY pin)
GROUP BY pin
ORDER BY TIME ASC
ДЕНЬ - вид со следующими деталями
SELECT id, pin, event_point_id, time, firstname, lastname, dept
FROM acc_monitor_log
WHERE (((TO_DAYS(NOW()) - TO_DAYS(time)) < 1) AND (pin <> '--'))
Какие могут быть варианты, чтобы ускорить это?