多选
select count(id) from table where name='a'
select count(id) from table where name='b'
与组一选
select name,count(id) from table where name in('a','b') group by name;
哪一个更好?
我说在这样一个简单示例中的 group by 语句会执行相同或更好,并且可能会更好,因为如果您正在运行需要分组的两个不同的 select 语句,那么发布处理您的信息的性能将会受到影响也是。
一般来说,准备和执行一条 SQL 语句比两条语句要好。
它在资源方面“更好”,因为将语句发送到 MySQL 服务器、MySQL 服务器解析语句、准备执行计划、然后执行计划、然后返回结果集所涉及的开销。在客户端,也有一些管理开销。
虽然它不会对应用程序对单个请求的整体响应时间产生任何影响,但真正的问题是 MySQL 服务器上的可伸缩性。
另一方面,如果单个语句比两个单独的语句占用更多的资源,那么最好运行两个单独的语句。
在您的情况下,缺少有关架构和行分布的任何信息,很可能获得两个计数的一个语句是“更好”的方法。
(一个语句的问题是它可能返回零、一或两行;而两个单独的语句将分别返回 1 行。(因此在客户端处理结果集会有点不同。)
在这种情况下使用 GROUP BY 总是更好,如果您只想将它用于特定名称,请选择个人,即第一个。
但是,如果您想获得所有名称的计数,您必须选择GROUP BY,因为它可以简化您的代码以及对服务器的性能影响。
我更喜欢第二个,GROUP
因为您只需要对服务器执行一次。