在MySQL中查找最新评论日期 - 速度问题

时间:2013-04-01 05:10:27

标签: mysql query-optimization

我有一个查询来查找对特定网页文章发表评论时的最新日期:

SELECT created_on , created_by_name, created_by_id , body 
FROM ac2012.acx_comments WHERE created_on IN (
SELECT MAX(created_on)
FROM ac2012.acx_comments WHERE parent_id = '642')

查询正在运行,打印出parent_id为642的最新评论日期。

但是,此查询大约需要4秒钟。这与我的大多数查询进行比较,平均只需0.1秒。

我很想知道 - 有这么长的原因,我怎么能让它变得更快?例如,我认为将其限制为parent_id“642”将开始查询,只查看3个注释行...这应该使得计算created_on的最大值不会花费很长时间。

任何建议将不胜感激。也许WHERE应放在其他地方以优化速度?

请参阅此处的表格架构:https://docs.google.com/spreadsheet/pub?key=0AjkotydroXWqdHBEOHAtalJpazROaHh3R0VpM0hZSlE&output=html

1 个答案:

答案 0 :(得分:1)

你应该在parent_id和created_on上添加索引,如

  

AlTER TABLE acx_comments ADD INDEX parent_id_created_on(parent_id,   created_on)

重写您的查询

  

SELECT created_on,created_by_name,created_by_id,body FROM   acx_comments一个JOIN(SELECT MAX(created_on)as created_on FROM acx_comments where   parent_id ='642')b ON a.created_on = b.created_on