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

Jon*_*nny 1 sql performance

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

任何想法都会很棒

谢谢

Gor*_*off 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
Run Code Online (Sandbox Code Playgroud)

left outer join得到所有类别,即使他们没有任何项目.