需要优化 MySQL 查询以在 Solr 中使用该查询
Posted
技术标签:
【中文标题】需要优化 MySQL 查询以在 Solr 中使用该查询【英文标题】:Need to optimize the MySQL query to use that one in 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 秒。
【参考方案1】:
您从表中选择所有内容,加入另一个表并对结果集进行分组。
显然读取 170 万行需要一些时间。
所以唯一的建议可能是 - 购买更快的存储(即 SSD),因为无论如何您都需要读取所有数据以返回结果
【讨论】:
感谢 Zerkms 的回复。我们正在使用 NetApp 存储解决方案。并且很难改变那个甚至不值得选择。我正在寻找另一种解决方案。以上是关于需要优化 MySQL 查询以在 Solr 中使用该查询的主要内容,如果未能解决你的问题,请参考以下文章