レポートを作成するために、さまざまなテーブルからさまざまなデータを選択する MySQL クエリがあります。例:
SELECT
u.id,
u.first_name,
u.last_name,
(select count(*) from monkeys where owner_id = u.id) as pet_monkeys,
((select count(*) from speeding_tickets where owner_id = u.id) + (select count(*) from parking_tickets where owner_id = u.id)) as moving_violations,
FROM
user as u
WHERE
u.id = 12345
実際のコードには、さまざまなテーブルから統計情報を取得する約 20 のサブセレクトがあります。このクエリも悪夢のように遅いです。
上記のクエリを JOIN や UNION などで整理するより良い方法はありますか?