在MySQL中,count一般有以下使用方式。
count(*): 查询总的行数,null值也被计算在内
count(列名):查询某一列的行数,null值不被计算在内
count(1):查询总行数,null值被计算在内
count(distinct 列名):计算非null且不重复的行数
另外一点:myisam引擎很容易获得总行数的统计。查询速度变得更快。因为myisam存储引擎已经存储了表的总行数。
应该是每次新增加一行,这个计数器就加1。英文资料是这样子说的:
On MyISAM, doing a query that does SELECT COUNT(*) FROM {some_table}, is very fast, since MyISAM keeps the information in the index
也就是说,把表的总数缓存在索引中了。
注意一点:myisam存储引擎的表,count(*)速度快的也仅仅是不带where条件的count。这个想想容易理解的,因为你带了where限制条件,原来所以中缓存的表总数能够直接返回用吗?不能用。这个查询引擎也是需要根据where条件去表中扫描数据,进行统计返回的。