我有一个查询通过使用LEFT JOIN和子查询从多个表中获取计数。这个想法是让activites成员曾参加过各种计数多个左连接的MySQL计数 - optomization
的模式是这样的:
成员 PK member_id
table1的 PK tbl1_id FK member_id
表2 PK tbl2_id FK member_id
table3 PK tbl 3_id FK member_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
其中27是一个测试ID。实际的查询连接三个以上的表,并且在更改member_id的情况下多次运行查询。问题是这个查询运行速度很慢。我得到我需要的信息,但我想知道是否有人可以提出一种方法来优化这一点。任何建议非常感谢。非常感谢。
你对所有这些表的索引是什么? – MatBailie 2011-12-16 16:37:59