【问题标题】:sql count performance [duplicate]sql计数性能[重复]
【发布时间】:2012-06-08 18:52:19
【问题描述】:

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

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

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

谢谢

【问题讨论】:

  • 查询优化器告诉你什么?

标签: sql oracle


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      但对于读者 count(id) 表示打算计算 id 不为空的所有行。为避免混淆,我宁愿使用 count(*)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-29
        • 2016-10-27
        • 2021-06-09
        相关资源
        最近更新 更多