当前位置:  开发笔记 > 编程语言 > 正文

优化SQL查询

如何解决《优化SQL查询》经验,为你挑选了1个好方法。

我有以下查询:

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']);
}

我认为这是一个糟糕的策略.还有其他建议吗?



1> Tom Haigh..:
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

我似乎被低估了,因为你实际上可以从日记表中检索所需的所有数据.我假设这是一个简化的例子,实际上需要日记表中的其他字段,这个方法也会带回没有注释的记录.如果你不需要这两件事中的任何一件,那么我会选择其他答案.

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有