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(id) FROM user;
> SELECT COUNT(*) FROM user WHERE id LIKE "%%";

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值