我有2個表:LEFT JOIN與GROUP_CONCAT太慢
users (id, firstname, lastname, etc)
users_to_groups (user_id(index), group_id(index))
我想提出一個返回類似下面記錄的查詢:
firstname lastname groups
John Smith 1,2,3,5
Tom Doe 3,5
我使用GROUP_CONCAT功能,目前我的查詢是:
SELECT * FROM users
LEFT OUTER JOIN
(
SELECT user_id, group_concat(group_id) FROM users_to_groups GROUP BY user_id
) AS i
ON users.id = i.user_id
雖然有效,但速度很慢。我在組表中有4萬用戶和26萬條記錄。 看起來像查詢不使用索引並遍歷每個用戶的所有260k行。
有什麼辦法讓它更快?它需要3分鐘以上,但我認爲它不應該。
謝謝!
多長時間內查詢取來執行,如果你對自己的運行呢?你可以發佈EXPLAIN的輸出嗎? –
請發佈您的查詢解釋計劃,以便人們可以幫助找出爲什麼不使用索引。基本上,它看起來像你要求所有用戶的信息(任何地方沒有WHERE子句),所以所有的數據都必須被掃描。如果你單獨運行內部選擇需要多長時間? – Galz