Php MySQL。需要统计大约9000个类别的职位数量

Php MySQL。需要统计大约9000个类别的职位数量,php,mysql,optimization,count,Php,Mysql,Optimization,Count,我正在制作一个网站地图。我有一个表,它将文章与类别(2列:categoryId,postId)连接起来。总共有近9000个类别,我想统计每个类别中的帖子数量,以预测分页中的页面数量。我试着为每个类别做9000个计数(*),但这太慢了(实际上是2个小时)。我能做什么?谢谢。您只需进行一次选择计数,并按您的类别进行分组。如下所示: SELECT C, COUNT(*) FROM yourtable GROUP BY categoryId as C 如果您只想使用特定类别,请尝试使用WHERE ca

我正在制作一个网站地图。我有一个表,它将文章与类别(2列:categoryId,postId)连接起来。总共有近9000个类别,我想统计每个类别中的帖子数量,以预测分页中的页面数量。我试着为每个类别做9000个计数(*),但这太慢了(实际上是2个小时)。我能做什么?谢谢。

您只需进行一次选择计数,并按您的类别进行分组。如下所示:

SELECT C, COUNT(*) FROM yourtable GROUP BY categoryId as C
如果您只想使用特定类别,请尝试使用
WHERE categoryID=?


在“分组依据”之前,请使用“分组依据”功能

SELECT C, COUNT(*)
FROM TABLE
GROUP BY categoryId as C

你可以数一数,然后按类别对它进行分组

select Count(postid) as NumberOfPosts, categoryid from your_table group by categoryid
就这么简单

对你们来说,最好的解决方案是创建一个表格,在那个里你们将保存真实的统计数据,并在创建帖子时增加它,或者在删除帖子时减少它

新的 如果您需要特定类别,只需添加到查询中,其中
categoryid=?

因此,您的查询应该如下所示

select Count(postid) as NumberOfPosts from your_table where categoryid=?
或者,如果您想搜索多个类别,而不仅仅是这样做

select Count(postid) as NumberOfPosts, categoryid from your_table where categoryid in (1,2,3,4)
group by categoryid

您可能缺少了
as
按类别分组ID**as**C
我实际上想获取特定类别中的帖子数量,而不是全部。我实际上想获取特定类别中的帖子数量,而不是全部。但是是的,这个查询很好,而且运行速度非常快。这个查询在没有categoryId的情况下运行。但是如果没有categoryId,它实际上是无用的。您只需要使用categoryId=?正如我在编辑后的帖子中所说,这个问题就是解决方案。谢谢事实上,我想在一个特定的类别中发表大量的文章,而不是全部。在我看来,“最佳解决方案”并不是最好的。我不想把s**t放在我的数据库中。但我说的是性能,从有9000条记录的表中选择记录更容易,而不是从有100多万条记录的表中计算记录的数量并按类别进行分组,每次有人打开你的网站地图时都要这样做???我想用指定的id获取类别中的帖子数量。对不起,我忘了添加这个重要的部分。