Необходимо оптимизировать запрос MySQL, чтобы использовать его в Solr - PullRequest
0 голосов
/ 27 января 2012

Мне нужно оптимизировать следующий запрос. В данный момент серверу требуется 1 минута 54 секунды, и мне нужно оптимизировать этот запрос, чтобы он выполнялся менее минуты, значит, меньше 60 секунд.

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   |   -

1 Ответ

0 голосов
/ 27 января 2012

Вы выбираете все из таблицы, присоединяетесь к другой таблице и группируете набор результатов.

Очевидно, что для чтения 1,7 млн ​​строк требуется некоторое время.

Так что единственный совет может быть - купить более быстрое хранилище (то есть SSD), потому что вам все равно нужно прочитать все данные, чтобы получить результат

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...