gotchaCritical
What is the difference between select count(*) and select count(any_non_null_column)?
Viewed 0 times
countthewhatdifferencebetweenandselectany_non_null_column
Problem
I seem to remember that (on Oracle) there is a difference between uttering
What are the differences between these two statements, if any?
select count(*) from any_table and select count(any_non_null_column) from any_table.What are the differences between these two statements, if any?
Solution
- COUNT(*) will include NULLS
- COUNT(column_or_expression) won't.
This means
COUNT(any_non_null_column) will give the same as COUNT(*) of course because there are no NULL values to cause differences.Generally,
COUNT(*) should be better because any index can be used because COUNT(column_or_expression) may not be indexed or SARGableFrom ANSI-92 (look for "
Scalar expressions 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 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.
The same rules apply to SQL Server and Sybase too at least
Note: COUNT(1) is the same as COUNT(*) because 1 is a non-nullable expression.
Context
StackExchange Database Administrators Q#2511, answer score: 74
Revisions (0)
No revisions yet.