Я работаю над базой данных MySQL с 3 таблицами - workout_data, упражнениями и наборами таблиц. Я столкнулся с проблемами, связанными с созданием отчетов на основе этих трех таблиц.Создание отчета из 1 миллиона + записей в MySQL и отображение на странице Java JSP
Чтобы добавить дополнительную информацию, несколько наборов составляют упражнение, и ряд упражнений будет тренировкой. В настоящее время у меня есть метрики, из которых должен быть создан отчет из данных в этих таблицах. Я должен создавать отчеты за последние 42 дня, включая эту неделю. Запросы выполняются в течение длительного времени к тому времени, когда я получу отчет, присоединив эти таблицы.
Например, таблица наборов содержит более 1 миллиона записей только за последние 42 дня. Идентификатор в этой таблице - excercise_id в таблице упражнений. Идентификатор таблицы упражнений - workout_id в таблице workout_data.
Я выполняю этот запрос, и для получения данных требуется более 10 минут. Я должен подготовить отчет и показать его пользователю в браузере. Но из-за этого долгого запроса веб-страница не работает, и пользователь не может видеть отчет.
Любые советы о том, как достичь этого?
SELECT REPORTSETS.USER_ID,REPORTSETS.WORKOUT_LOG_ID,
REPORTSETS.SET_DATE,REPORTSETS.EXCERCISE_ID,REPORTSETS.SET_NUMBER
FROM EXCERCISES
INNER JOIN REPORTSETS ON EXCERCISES.ID=REPORTSETS.EXCERCISE_ID
where user_id=(select id from users where email='[email protected]')
and substr(set_date,1,10)='2013-10-29'
GROUP BY REPORTSETS.USER_ID,REPORTSETS.WORKOUT_LOG_ID,
REPORTSETS.SET_DATE,REPORTSETS.EXCERCISE_ID,REPORTSETS.SET_NUMBER
Если столбец set_date на самом деле является столбцом varchar, измените его на DATETIME. Шутки в сторону. Это поможет производительности * *. –