大家好我在創建工作報告,出於某種原因在使用左連接時遇到了一些嚴重問題。我有兩個表,一個u_entities表和一個u_activities表,其中存在從實體到活動的一對多關係。我需要找出哪些實體沒有與之關聯的活動。所以我想讓連接實體離開活動並列出空的活動。所以我的查詢看起來像這樣Mysql左連接花費太長時間或崩潰...請幫助
SELECT *
FROM (SELECT a.activity_id, e.entity_id, e.acc_name
FROM u_entity AS e
LEFT JOIN u_activity AS a
ON e.entity_id = a.account_id) AS i
WHERE i.activity_id = ''
這只是需要的時間太長了所以纔看到左邊的結果加入我試圖只需運行子選擇在phpMyAdmin它看起來像這樣
SELECT a.activity_id, e.entity_id, e.acc_name
FROM u_entity AS e
LEFT JOIN u_activity AS a
ON e.entity_id = a.account_id
我遇到了同樣的問題,服務器只是繼續工作,它永遠不會結束。我不得不拿起桌子並使用xammp在我的本地機器上運行查詢,因爲人們需要服務器並鎖定了它。當我在localhost端運行phpmyadmin中的第二個查詢時,我的電腦崩潰了。實體表有大約20000條記錄和大約80000的活躍度,但我在這些表上完成了內部連接,沒有問題,我不明白爲什麼這是一個問題。也許我的查詢是錯誤的或什麼的。我從來沒有做過左的加入,所以我不知道。如果有另一種方法可以做到這一點,但我很想知道爲什麼左連接無法正常工作。請任何迴應將不勝感激。
您可以張貼在這兩個查詢的解釋(或者至少內層查詢)? – Damp 2011-02-24 21:46:41
至少在e.entity_id上應該有一個索引,a.account_id,i.activity_id – 2011-02-24 21:51:14
我同意@Dagon。這些表如何索引? – 2011-02-24 21:56:01