我正在研究一个带有 3 个表的 MySQL 数据库 - 锻炼数据、练习和设置表。我面临与基于这三个表生成报告相关的问题。
要添加更多信息,一组练习组成一个练习,而一些练习将是一个锻炼。我目前拥有要从这些表中的数据生成报告的指标。我必须生成包括本周在内的过去 42 天的报告。当我通过加入这些表获得报告时,查询运行了很长时间。
例如 - sets 表在过去 42 天内有超过 100 万条记录。此表中的 id 是 excercise 表中的 excercise_id。excercise 表的 id 是锻炼数据表中的锻炼 ID。
我正在运行这个查询,获取数据需要 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='testuser1@gmail.com')
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