gbn*_*gbn 73
这意味着COUNT(any_non_null_column)将给出与COUNT(*)当然相同的结果,因为没有 NULL 值会导致差异。
一般来说,COUNT(*)应该更好,因为任何索引都可以使用,因为COUNT(column_or_expression)可能没有索引或 SARGable
来自ANSI-92(寻找“ Scalar expressions 125”)
案件:
a) 如果指定了 COUNT(*),则结果为 T 的基数。
b) 否则,令 TX 为将 <value expression> 应用于 T 的每一行并消除空值的结果的单列表。如果消除了一个或多个空值,则会引发完成条件:警告- set 函数中消除了空值。
相同的规则至少也适用于 SQL Server 和 Sybase
注意: COUNT(1) 与 COUNT(*) 相同,因为 1 是不可为空的表达式。
Jac*_*las 16
在任何最新的(即8.x+)版本的 Oracle 中,它们都做同样的事情。换句话说,唯一的区别是语义:
select count(*) from any_table
Run Code Online (Sandbox Code Playgroud)
易于阅读且显而易见您正在尝试做的事情,并且
select count(any_non_null_column) from any_table
Run Code Online (Sandbox Code Playgroud)
更难阅读,因为
any_non_null_column真的被强制执行为not null简而言之,使用count(*)