請我需要幫助。我有一個查詢我運行從兩個表中獲取數據,但它消耗大量內存,需要多達9秒才能獲取大約100條記錄。我可能需要在某個時候獲取高達20萬條記錄。請如何優化此查詢?MySQL左JOIN Group_concat性能問題
SELECT user_id AS id, name, address, phone, city, book_title
FROM users us LEFT OUTER JOIN
(SELECT bid, GROUP_CONCAT(DISTINCT book_title SEPARATOR ' ')
AS book_title FROM user_books GROUP BY bid)bo ON bo.bid = us.user_id
在user_books表我有book_titles對一些用戶的多個條目,我想返回,其中包括所有的用戶都用的書名或不和一列內BOOK_TITLE結果。
我跑了一個SQL的查詢說明語句,並得到這個
id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra
1 PRIMARY us ALL NULL NULL NULL NULL 168272
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 65900
2 DERIVED user_books ALL NULL uid 4 NULL 164989
注:我有列中標,BOOK_TITLE,USER_ID,姓名,地址,電話,城市各自的表中的索引。
有關如何提高性能的任何建議。
bo.bid = u.user_id!?!?你確定? – Strawberry
抱歉錯字錯誤bo.bid = us.user_id – andychukse
稱爲bid的東西等於所謂的user_id。我很高興我不是DBA!?! – Strawberry