ワークアウトデータ、エクササイズ、セットテーブルの3つのテーブルを持つMySQLデータベースに取り組んでいます。これら 3 つのテーブルに基づくレポートの生成に関連する問題に直面しています。
さらに情報を追加すると、いくつかのセットがエクササイズを構成し、いくつかのエクササイズがワークアウトになります. 現在、これらのテーブルのデータからレポートを生成するための指標があります。今週を含む過去 42 日間のレポートを作成する必要があります。これらのテーブルを結合してレポートを取得するまでに、クエリは長時間実行されます。
たとえば、sets テーブルには、過去 42 日間だけで 100 万件を超えるレコードがあります。このテーブルの ID は、exercise テーブルの excercise_id です。エクササイズ テーブルの ID は、workout_data テーブルの運動 ID です。
このクエリを実行していますが、データを取得するのに 10 分以上かかります。レポートを作成し、ブラウザでユーザーに表示する必要があります。しかし、この実行時間の長いクエリが原因で Web ページがタイムアウトし、ユーザーはレポートを表示できません。
これを達成する方法について何かアドバイスはありますか?
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