Sybase - count(*) 和 count(1) 在性能上有区别吗?

3

查询1:

SELECT COUNT(1) FROM STUDENTS

查询2:

SELECT COUNT(*) FROM STUDENTS

这两个查询返回的结果相同,但它们之间是否存在性能差异?

我听说第一个查询比第二个查询快,但有人能否具体说明一下吗?


可能是Count(*) vs Count(1)的重复问题。 - user330315
2个回答

4

您可以使用count(*)count(1),两者速度没有区别。正如所述,这只是一个城市传说 :)


最后说明一点,count(*)count(columnName)可能不同!
第一个计算所有行,第二个计算指定列不为NULL的行数。


1
请注意,COUNT(Column) 可能需要进行表扫描(较慢),而 COUNT(*) 则可能不需要(基本表元数据)。 - Jonathan Leffler

1

这两个语句完全没有任何区别。

count(1) 更快的传言是一个从未被证实的城市传说。


1
这是一个与DBMS无关的答案; 无论您使用哪个DBMS都没有关系! - Jonathan Leffler
@JonathanLeffler:是的,绝对没问题。 - user330315

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接