Php 在SQL上计算类别中的不同项

Php 在SQL上计算类别中的不同项,php,mysql,sql,count,Php,Mysql,Sql,Count,我需要编写一个SQL语句,如下所示: 我有一个包含许多项目的表,每个项目都有一个类别。总共有3类 我需要选择不同的类别,然后根据每个类别中的项目数量进行排序 这是个好办法吗?还是太慢了 选择不同类别,计数(*)作为计数器 来自项目描述 按类别分组 按计数器说明订购 由于您使用的是按类别分组的,因此不需要使用不同的: SELECT category, count(*) AS counter FROM item_descr GROUP BY category ORDER BY counter DES

我需要编写一个SQL语句,如下所示:

我有一个包含许多项目的表,每个项目都有一个类别。总共有3类

我需要选择不同的类别,然后根据每个类别中的项目数量进行排序

这是个好办法吗?还是太慢了

选择不同类别,计数(*)作为计数器
来自项目描述
按类别分组
按计数器说明订购

由于您使用的是按类别分组的
,因此不需要使用
不同的

SELECT category, count(*) AS counter
FROM item_descr
GROUP BY category
ORDER BY counter DESC

分组依据
正在执行您想要的操作
DISTINCT
是多余的。

如果您想获得良好的性能,尤其是在较大的表上,那么在类别上有一个索引是非常重要的。

DISTINCT在这种情况下是不必要的。事实上,这句话可能不是真的,因为类别的值太少,索引无法生效。您不知道这一点。用户所说的是“我有一个包含许多项的表,每个项都有一个类别”该表有许多项,但只有3个类别选项。据我们所知,这张表有10项或1000万项。不能根据表中类别字段的基数猜测表大小。如果您可以使用索引有效地消除大型数据库的三分之一,这将有所帮助。索引的问题在于类别的数量,而不是项目的数量。三个类别意味着指数将具有非常非常高的选择性。它可能不会对性能产生太大的影响。我同意它可能不会有太大的影响,但在某些情况下,你能得到的任何提升都是积极的,尤其是如果你需要考虑用户对速度的感知。