COUNT(字段)、COUNT(常量)和COUNT(*)之间的区别:
-
COUNT(常量) 和 COUNT(*) 表示的是直接查询符合条件的数据库表的行数。
-
COUNT(列名)表示的是查询符合条件的列的值不为NULL的行数。
特别说明:
MySQL官方文档是这么说的:
InnoDB handles SELECT COUNT(*) and SELECT COUNT(1) operations in the same way. There is no performance difference.
所以,对于count(1)和count(*),MySQL的优化是完全一样的,根本不存在谁更快。但依旧建议使用count(*),因为这是SQL92定义的标准统计行数的语法,《阿里巴巴Java开发手册》里也是建议使用COUNT(*)。