У меня есть несколько неприятных запросов с несколькими подвыборами, которые действительно замедляют его. Я уже кеширую запрос, но его результаты часто меняются, и результаты запроса должны отображаться на странице с высоким трафиком.
SELECT user_id, user_id AS uid, (SELECT correct_words
FROM score
WHERE user_id = `uid`
ORDER BY correct_words DESC, incorrect_words ASC
LIMIT 0, 1) AS correct_words,
(SELECT incorrect_words
FROM score
WHERE user_id = `uid`
ORDER BY correct_words DESC, incorrect_words ASC
LIMIT 0, 1) AS incorrect_words
FROM score
WHERE user_id > 0
AND DATE(date_tested) = DATE(NOW())
GROUP BY user_id
ORDER BY correct_words DESC,incorrect_words ASC
LIMIT 0,7
Цель запроса - выбрать максимальный балл для пользователей за этот день, но показать только самый высокий балл оценки этого пользователя вместо всех его баллов (например, если у одного пользователя было 4 Лучшие 10 баллов за этот день, я хочу показать только самый высокий балл этого пользователя и удалить остальные)
Как ни старайся, мне еще предстоит повторить результаты этого запроса любым другим способом. Сейчас его среднее время выполнения составляет около 2 секунд, но я боюсь, что оно может значительно увеличиться по мере увеличения стола.
Есть мысли?