首先要知道COUNT(1)
和 COUNT(*)
表示的是直接查询符合条件的数据库表的行数,而COUNT(列名/字段)
表示的是查询符合条件的列的值不为NULL的行数。
所以这里得出一个结论:
COUNT(1)和COUNT(*):包括对NULL的统计
COUNT(字段):不包括对NULL的统计
其次有很多关于COUNT(1)和COUNT(*)性能不同的说法(COUNT(1)比COUNT(*)性能好),但实际上,这两种查询方式在实现上没有区别,而且效率一样。
总结:
COUNT(1)和COUNT(*):包括对NULL的统计 ;COUNT(字段):不包括对NULL的统计。
COUNT(*)和COUNT(1)实现上没有区别,而且效率一样,但是COUNT(字段)需要进行字段的非NULL判断,所以效率会低一些。