当前位置: 首页 > 面试题库 >

什么是MYSQL count(*)或count(1)更好的选择?

太叔天宇
2023-03-14
问题内容

相关(SQL Server): Count(*)vs
Count(1)

您能告诉我什么是性能更好的(MySQL)吗?Count(*)还是count(1)?


问题答案:

这是MySQL的答案。

它们的性能完全相同-除非您使用MyISAM,否则COUNT(*)存在特例。COUNT(*)无论如何我总是用。

http://dev.mysql.com/doc/refman/5.1/en/group-by-
functions.html#function_count

如果SELECT从一个表中检索,没有其他列被检索,并且没有WHERE子句,则COUNT(*)被优化以非常快地返回。例如:

mysql> SELECT COUNT(*) FROM student;

此优化仅适用于MyISAM表,因为为该存储引擎存储了准确的行数,并且可以非常快速地对其进行访问。对于诸如InnoDB之类的事务存储引擎,存储准确的行数会带来更多问题,因为可能发生多个事务,每个事务都可能影响计数。

编辑

你们当中有些人可能错过了幽默的黑暗尝试。当MySQL将做与SQL
Server不同的事情时,我宁愿将此问题保留为任何重复的问题。因此,我投了赞成票重新提出问题(答案显然错误)。

以上MyISAM优化同样适用于

COUNT(*)
COUNT(1)
COUNT(pk-column)
COUNT(any-non-nullable-column)

因此,真正的答案是它们 始终 相同。



 类似资料:
  • 问题内容: 我经常会发现以下三种变体: 据我所知,它们都做相同的事情,我发现自己在代码库中使用了这三个。但是,我不喜欢用不同的方式做同样的事情。我应该坚持哪一个?他们中的任何一个都比其他两个更好吗? 问题答案: 使用或,并坚持使用,如果数据库允许或,则使用它。 简而言之,不要使用任何东西。这是一招的小马,很少会做你想做的事,在那些罕见的情况下,相当于 使用计数 使用您的所有疑问需要计数的一切,甚至

  • 问题内容: 谈论Java性能..哪个更好?if..else或多个if 要么 对您的想法感兴趣 谢谢! 问题答案: 在性能方面没有区别。选择最易读的选项,具体取决于代码的功能。 通常,不必担心这些微优化。只有在确定存在需要解决的性能问题后,才能进行优化。 “我们应该忘记效率低下的问题,大约有97%的时间是这样:过早的优化是万恶之源。” -唐纳德​​·努斯

  • 问题内容: 我需要创建一个使用12个参数的存储过程,并使用此参数的不同组合来过滤查询。所有12个参数都不是强制性的,好像我传递3或5或12个参数取决于用户输入的搜索输入。 我可以使用动态SQL查询或“ Case where”语句创建2种方法。这些查询的示例如下: 动态查询 DECLARE @condition VARCHAR(MAX)=’‘ Declare @var1 varchar(10) De

  • 问题内容: 和,mysql有什么区别。 问题答案: 计算结果集中的所有行(如果使用GROUP BY,则为组)。 只计算不为空的那些行。即使没有NULL值,在某些情况下这也会变慢,因为必须检查该值(除非该列不可为空)。 与1 相同,因为1永远不能为NULL。 要查看结果的差异,您可以尝试以下小实验: 结果:

  • 问题内容: 我使用了一个映射,该映射使用句子中的单词作为键,并使用整数作为值。 上面的代码 始终 以正确的顺序显示地图,即 但是如果我改变 至 输出更改为: 我知道在Golang中地图迭代是随机的,但是为什么总是导致地图迭代以有序方式返回却又相反呢? 问题答案: 更改变量值的方式与映射元素的迭代顺序无关。 没有“正确的”迭代顺序,可以将迭代顺序视为随机的(在当前实现中,它 是 随机的)。从语言规范

  • 我们将收到处理该物品属于以下任何组的请求- Grp1- 我们收到3个A1、B1、C1请求。由于所有请求都属于同一组,因此应按顺序处理这些请求(在提取下一个请求进行处理之前,应先完成当前请求) 我们收到了4个A1、A2、B2、B3请求,其中A2和B2请求属于同一组,因此应按场景1中所述顺序处理,A1和B3请求应并行处理,因为它们属于不同的组 因此,基本上应该并行处理来自不同组的请求。来自同一组的请求