-1

可能重复:
Count(*) vs Count(1)

如果我有一个表,'id' 是主键,那么这两个命令有不同的性能吗?

select count(*) from t;
select count(id) from t;

谢谢

4

3 回答 3

0

不,Oracle 接管并采取最快的方式,以防万一count(*)

于 2012-06-04T17:51:09.760 回答
0

这些将具有相同的性能。在大多数数据库中,count() 会导致扫描表或可用索引。是否使用索引而不是表仅取决于查询优化器。如果优化器足够聪明地使用索引,那么它在这两种情况下都应该足够聪明。

使用可用的元数据表,您通常可以比使用 count() 查询更有效地获取表中的行数。

于 2012-06-04T17:52:09.590 回答
0

我认为如果 id 是主键 count(*) 和 count(id) 在语义上是等效的。

但是对于读者来说 count(id)意味着打算计算 id 不为空的所有行。为避免混淆,我宁愿使用 count(*)。

于 2012-06-04T17:59:11.800 回答