1

多选

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;

哪一个更好?

4

4 回答 4

1

我说在这样一个简单示例中的 group by 语句会执行相同或更好,并且可能会更好,因为如果您正在运行需要分组的两个不同的 select 语句,那么发布处理您的信息的性能将会受到影响也是。

于 2012-12-19T02:37:10.250 回答
1

一般来说,准备和执行一条 SQL 语句比两条语句要好。

它在资源方面“更好”,因为将语句发送到 MySQL 服务器、MySQL 服务器解析语句、准备执行计划、然后执行计划、然后返回结果集所涉及的开销。在客户端,也有一些管理开销。

虽然它不会对应用程序对单个请求的整体响应时间产生任何影响,但真正的问题是 MySQL 服务器上的可伸缩性。

另一方面,如果单个语句比两个单独的语句占用更多的资源,那么最好运行两个单独的语句。

在您的情况下,缺少有关架构和行分布的任何信息,很可能获得两个计数的一个语句是“更好”的方法。

(一个语句的问题是它可能返回零、一或两行;而两个单独的语句将分别返回 1 行。(因此在客户端处理结果集会有点不同。)

于 2012-12-19T02:46:34.420 回答
0

在这种情况下使用 GROUP BY 总是更好,如果您只想将它​​用于特定名称,请选择个人,即第一个

但是,如果您想获得所有名称的计数,您必须选择GROUP BY,因为它可以简化您的代码以及对服务器的性能影响。

于 2012-12-19T05:18:52.933 回答
0

我更喜欢第二个,GROUP因为您只需要对服务器执行一次。

于 2012-12-19T02:33:38.343 回答