主页 > 手机  > 

面试百问之count(1)和count(*)区别是什么?


count(1) 和 count(*) 是 SQL 中用于统计行数的两种常见方式,它们的区别在于统计的对象不同。

count(1) :这种写法中,括号里的参数并不影响最终的计算结果,常见的用法是传入一个常数值(比如1),因为它会被优化器忽略。count(1) 会统计查询结果集中非空行的数量,相当于计算满足条件的行数。

count(*) :这种写法中,使用通配符 * 代表所有的列,因为通配符会展开成所有的列名,并且不会受到空值的影响。count(*) 会统计查询结果集的所有行数,包括空行和非空行。

在大多数情况下,使用 count(*) 会更常见并且更高效。因为数据库引擎可以直接计算返回的行数,而无需对具体的列进行操作。另外,count(*) 可以保证返回准确的结果,即使查询中有复杂的条件或者联结操作。

相比之下,count(1)可能会稍微慢一些,因为每一行都需要进行一次参数匹配。然而,在某些特定情况下,可能会使用 count(1) 来代替 count(*) 以解决某些性能问题。这是因为 count(1) 无需展开列名,可能会减少一些开销。

总的来说,count(*) 是更常见和更通用的用法,可以直接统计查询结果的总行数。而 count(1) 则可以在一些特殊情况下提供一些性能优势。

标签:

面试百问之count(1)和count(*)区别是什么?由讯客互联手机栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“面试百问之count(1)和count(*)区别是什么?