【问题标题】:Need to optimize the MySQL query to use that one in Solr需要优化 MySQL 查询以在 Solr 中使用该查询
【发布时间】:2012-01-26 20:23:16
【问题描述】:

我需要优化以下查询。现在,服务器需要 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 |简单 | af |index |primary |primary|7 |NULL |1791305|使用索引;使用临时 1 |简单 | a |Eq_ref|primary |primary|4 |Feed.af.article_id| 1 | -

【问题讨论】:

  • 1.54 秒小于 60 秒。恭喜,你做到了!
  • 好的,我错过了什么吗?服务器上的 1.54 秒小于 60 秒...article_feed 表是否在 article_id 上有索引?有多少篇文章(大约),有多少篇文章供稿......
  • EXPLAIN SELECT ... 说什么?
  • 为了优化,我们需要查询(检查)、模式和解释,但由于我们没有数据,这仍然是一种反复试验。
  • 我已经更新并附上了查询的解释。 zerkms:这不是 1.54 秒,而是 1 分 54 秒。

标签: mysql optimization solr


【解决方案1】:

您从表中选择所有内容,加入另一个表并对结果集进行分组。

显然读取 170 万行需要一些时间。

所以唯一的建议可能是 - 购买更快的存储(即 SSD),因为无论如何您都需要读取所有数据以返回结果

【讨论】:

  • 感谢 Zerkms 的回复。我们正在使用 NetApp 存储解决方案。并且很难改变那个甚至不值得选择。我正在寻找另一种解决方案。
猜你喜欢
  • 2016-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-14
  • 2013-11-18
  • 2014-02-15
相关资源
最近更新 更多