我有一個查詢通過使用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