在跨表计数时如何减少对DB的调用次数

时间:2013-01-24 16:29:43

标签: sql performance

我有一个类别表,其中列出了大约35种可能的类别。然后我还有一个Item表,其中一个外键与category表中的一个类别相关。在我的索引页面上,我希望只显示每个类别中有多少项目。我只是不确定在构建更高效的查询和减少对数据库的调用数量方面,最好的方法是什么。

任何想法都会很棒

由于

1 个答案:

答案 0 :(得分:5)

您正在寻找一个简单的聚合查询:

select c.categoryName, count(i.itemId) as NumItems
from category c left outer join
     items i
     on c.categoryID = i.categoryID
group by c.categoryName
order by NumItems desc

left outer join获取所有类别,即使它们没有任何项目。