2012-01-26 147 views
0

我需要優化以下查詢。現在,它需要1分54秒的服務器,我需要優化此查詢運行少於一分鐘意味着少於60秒。需要優化MySQL查詢以在Solr中使用該查詢

SELECT 
     a.article_id, 
     a.provider_id, 
     a.status, 
     a.modified_at, 
     a.published_at, 
     a.title, 
     a.summary, 
     a.image, 
     GROUP_CONCAT(af.feed_id SEPARATOR ', ') AS feed_id_list 
    FROM 
     article a 
     INNER JOIN article_feed af 
      ON af.article_id = a.article_id 
    GROUP BY 
     a.article_id 
    ORDER BY 
     NULL 

如何優化此查詢以便它可以在60秒內執行?

這裏是查詢的解釋。

 
id|Select_type|table|type |Possible_keys|key |Key_len|ref    |rows |extra 
1 |Simple  | af |index |primary  |primary|7  |NULL    |1791305|Using index;usingtemporary 
1 |simple  | a |Eq_ref|primary  |primary|4  |Feed.af.article_id| 1 | - 
+2

1.54秒小於60秒。恭喜你,你做到了! – zerkms

+0

好的,我錯過了什麼嗎?在服務器上1.54秒小於60秒... article_feed表是否在article_id上​​有一個索引?多少篇文章(粗略地)以及文章的數量... – DRapp

+1

「EXPLAIN SELECT ...」是什麼意思? – jcmeloni

回答

0

您選擇一切從表中,加入另一桌和組結果集。

顯然需要一些時間來閱讀1.7M行。

所以,唯一的建議可能是 - 買一個更快的存儲(即SSD),因爲反正你需要閱讀所有數據返回結果

+0

感謝Zerkms的回覆。我們正在使用NetApp存儲解決方案。而且很難改變那個,甚至不值得選擇。我正在尋找另一種解決方案。 –