LEFT JOINとサブクエリを使用して複数のテーブルからカウントを取得しているクエリがあります。アイデアはメンバーが参加しているのactivites様々なカウントを取得するためにあるスキーマがこのようになります複数の左結合のMySQLカウント - オプトマイズ
:。 PKは
をMEMBER_IDメンバー
TABLE1 PKは FK MEMBER_ID
table2の をtbl1_id PK tbl2_id FK member_id
表3 PK tbl 27はテストIDで
SELECT t1.num1,t2.num2,t3.num3
FROM member m
LEFT JOIN
(
SELECT member_id,COUNT(*) as num1
FROM table1
GROUP BY member_id
) t1 ON t1.member_id = m.member_id
LEFT JOIN
(
SELECT member_id,COUNT(*) as num2
FROM table2
GROUP BY member_id
) t2 ON t2.member_id = m.member_id
LEFT JOIN
(
SELECT member_id,COUNT(*) as num3
FROM table3
GROUP BY member_id
) t3 ON t3.member_id = m.member_id
WHERE m.member_id = 27
: FKは私のクエリは次のようになります
をMEMBER_ID 3_id。実際のクエリでは、3つ以上のテーブルが結合され、クエリが変更されたmember_idで複数回実行されます。問題は、このクエリがかなり遅く実行されることです。私は必要な情報を得るが、誰かがこれを最適化する方法を提案できるかどうか疑問に思う。どんなアドバイスも大歓迎です。どうもありがとう。
これらのテーブルにはどのようなインデックスがありますか? – MatBailie