on ‎2009 Nov 17 11:37 AM
Structure of Example table:
Id, Integer (PK)
Name, Varchar(100)
Description, Text
I need to know if exists difference in performance between:
SELECT COUNT(*) FROM Example;
and
SELECT COUNT(Id) FROM Example;
Or does not exists differences?
Request clarification before answering.
In version 10.0 and above, COUNT( x ) is translated to COUNT(*) if x is an expression that is known to not allow NULL. In your example, I think you have Id as a primary key (non-NULL), and therefore COUNT(Id) is treated identically to COUNT(*) unless your Example table appears on the NULL-supplying side of an outer join.
For expressions Y that might be NULL, there are at least three ways that COUNT(Y) may be slower than COUNT(*):
Y needs to be computed. This means it must be fetched from the table if it is a column; if it is a more complex expression, it needs to be evaluated to determine if it is NULL. If the COUNT(Y) appears above a work table, the server may need to materialize Y in the work table so that it would be available at the group-by node.COUNT(Y1) and COUNT(Y2) for different expressions, and materialized views can not be used unless they have an appropriate COUNT(Y) that matches the query.Y. This also means that index-only retrieval is not possible if Y can not be recovered from the index.I do not know of any reason why COUNT(Y) might be faster than COUNT(*). So, use COUNT(*) if you want to count rows, and COUNT(Y) if you really need to distinguish how many rows had a NULL value for Y.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
| User | Count |
|---|---|
| 15 | |
| 9 | |
| 6 | |
| 5 | |
| 4 | |
| 4 | |
| 3 | |
| 2 | |
| 2 | |
| 2 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.