我有以下 MySQL 查询,它似乎消耗了系统 CPU 的过多处理器时间。
该查询假设获取上周评论数最多的新闻:
$timeago = strtotime("-1 week");
$query = "SELECT * ,
news.id,
news.title,
news.state,
news.date,
COUNT(comments.module_id) as comments_count,
comments.module,
comments.state
FROM news
LEFT OUTER JOIN comments on comments.module_id = news.id AND comments.module = 'news' AND comments.state = '1'
WHERE news.state = '2'
GROUP BY news.id, news.title, news.date
ORDER BY news.date >= $timeago DESC, comments_count DESC limit 6";
$result = mysql_query($query) or die (mysql_error());
$data = mysql_fetch_assoc($result);
查询服务器恰到好处,它会整理出上周评论数最多的新闻。新闻表中有 17,290 条记录。出于这个原因,我试图找出一种对 CPU 消耗有益的方式来修复查询。
欢迎大家提出意见。
解释计划说
| 编号 | 选择类型 | 表| 类型 | 可能的键 | 关键 | key_len | 参考 | 行 | 额外的
| 1 | 简单 | 新闻 | 参考 | 状态 | 状态 | 4 | 常量 | 17282 | 使用哪里;使用临时的;使用文件排序
| 1 | 简单 | 评论 | 参考 | 模块 ID | 模块 ID | 101 | sayasea_v2.news.id,常量,常量 | 4