実行に数分かかるクエリがあり、それを最適化する方法があるかどうか、または単に別のクエリに分割する必要があるかどうかを確認しようとしています。
モンスター全体を表示せずに、本質は次のとおりです。
SELECT
u.id,
u.email,
(select count(*) from photos where u.id = user_id) as num_of_photos,
(select count(*) from activity_log where type = 1 and u.id = user_id) as num_logins,
(select count(*) from activity_log where type = 4 and u.id = user_id) as num_help_views,
(select count(*) from activity_log) as activity_rating
FROM
user as u
ORDER BY activity_rating DESC
各ユーザーに関するさまざまなデータを取得する約 20 のサブセレクトがあり、最終的に CSV レポートに出力されます。
これまでのところ、DB には 2,000 人のユーザーしかいないため、クエリは実用的ではありません。実行できる最適化はありますか?