我有以下查询:
Select diary_id, (select count(*) from `comments` as c where c.d_id = d.diary_id) as diary_comments From `diaries` as d
这需要很长时间(在我的情况下接近0.119415).如何让它更快?
我只看到一种方法:对主查询中的每一行的注释编号进行额外查询.但这就像在循环中进行查询一样.就像是:
while ($r = mysql_fetch_array($res)) { $comments = mysql_query("select count(*) from `comments` where d_id = ".$r['diary_id']); }
我认为这是一个糟糕的策略.还有其他建议吗?
SELECT d.diary_id, count(c.d_id) as diary_comments FROM diaries d LEFT OUTER JOIN comments c ON (d.diary_id = c.d_id) GROUP BY d.diary_id
我似乎被低估了,因为你实际上可以从日记表中检索所需的所有数据.我假设这是一个简化的例子,实际上需要日记表中的其他字段,这个方法也会带回没有注释的记录.如果你不需要这两件事中的任何一件,那么我会选择其他答案.