多选
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;
哪一个更好?
答案 0 :(得分:1)
我说在这样一个简单的例子中group by语句会执行相同或更好,并且可能更好,因为如果你运行两个不同的select语句需要分组,那么性能就会受到影响处理您的信息。
答案 1 :(得分:1)
通常,最好准备和执行一个SQL语句而不是两个语句。
在资源方面它“更好”,因为将语句发送到MySQL服务器,MySQL服务器解析语句,准备执行计划,然后执行计划,然后返回结果集。在客户端,也有一些家务管理费用。
虽然单个请求的应用程序整体响应时间不会有太大差异,但真正的问题是MySQL服务器的可扩展性。
另一方面,如果单个语句比两个单独的语句更加耗费资源,那么首选运行两个单独的语句。
在您的情况下,如果没有关于模式和行分布的任何信息,那么获得两个计数的一个语句很可能是“更好”的方法。
(一个语句存在问题,它可能返回零,一行或两行;而两个单独的语句将返回1行。(因此在客户端处理结果集会有所不同。)
答案 2 :(得分:0)
我更喜欢使用GROUP
的第二个,因为您只需要对服务器执行一次。
答案 3 :(得分:0)
在这种情况下使用GROUP BY总是更好,如果您只是想将它用于特定名称,请选择个人,即第一个。
但是,如果您想获得所有名称的计数,您必须选择 GROUP BY ,因为这样可以简化您的代码以及服务器上的性能。