數據庫統計數據量時經常用的是count(1)或者count(*),這二者區別不大,在postgres裏面統計數據總量時,要注意count(column_name)與count(*)的區別,有些場景下會形成數據統計不許確的誤解。 sql
官方文檔上有一段話: 數據庫
For example, count(*) yields the total number of input rows; count(f1) yields the number of input rows in which f1 is non-null, since count ignores nulls; and count(distinct f1) yields the number of distinct non-null values of f1.
post
示例: spa
[postgres@localhost ~]$ psql psql (9.2.3) Type "help" for help. postgres=# create table t_kenyon(id int); CREATE TABLE postgres=# insert into t_kenyon values(1),(2),(2),(3),(null),(null); INSERT 0 6 postgres=# select * from t_kenyon; id ---- 1 2 2 3 (6 rows) postgres=# select count(1),count(*),count(id),count(distinct id) from t_kenyon; count | count | count | count -------+-------+-------+------- 6 | 6 | 4 | 3 (1 row) postgres=# drop table t_kenyon; DROP TABLE總結: