MySQL COUNT(*) 和 COUNT(1) 比较

说明

查询符合条件的行数的SQL语句,常有如下三种,效率各不相同。

> SELECT COUNT(*) FROM user;
> SELECT COUNT(1) FROM user;
> SELECT COUNT(id) FROM user;

在MYISAM存储引擎下,COUNT(*)的效率是最高的。因为该类存储引擎有内部计数器,可直接返回符合条件的行数。

在INNODB存储引擎下,COUNT(*)和COUNT(1)的效率差不多,COUNT(字段)的效率最低。因为COUNT(字段)需要对每一个字段做判断,判断其是否为NULL。

面试题

以下SQL语句的查询结果是否一致,说明理由?

> SELECT COUNT(*) FROM user;
> SELECT COUNT(1) FROM user;
> SELECT COUNT(*) FROM user WHERE id LIKE "%%";

答:第一条SQL查询的是user表的总行数,第二条SQL语句查询的是排除字段全为NULL的行的行数。第三条SQL查询的是排除字段id为NULL的行数。

猜你喜欢

转载自blog.csdn.net/qq_41057885/article/details/109191485
今日推荐