oracle – select count(*)和select count(any_non_null_column)之间有什么区别?

前端之家收集整理的这篇文章主要介绍了oracle – select count(*)和select count(any_non_null_column)之间有什么区别?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我似乎记得(在Oracle上)从any_table发出select count(*)和从any_table中选择count(any_non_null_column)之间存在差异.

如果有的话,这两个陈述之间有什么区别?

> COUNT(*)将包括NULLS
> COUNT(column_or_expression)不会.

这意味着COUNT(any_non_null_column)当然会给出与COUNT(*)相同的结果,因为没有NULL值会导致差异.

通常,COUNT(*)应该更好,因为可以使用任何索引,因为COUNT(column_or_expression)可能没有索引或SARGable

ANSI-92(寻找“标量表达式125”)

Case:

a) If COUNT(*) is specified,then the result is the cardinality
of T.

b) Otherwise,let TX be the single-column table that is the
result of applying the <value expression> to each row of T
and eliminating null values. If one or more null values are
eliminated,then a completion condition is raised: warning-
null value eliminated in set function.

同样的规则至少也适用于sql Server和Sybase

注意:COUNT(1)与COUNT(*)相同,因为1是不可为空的表达式.

猜你在找的Oracle相关文章