最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

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

IT圈 admin 2浏览 0评论

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的行数。

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的行数。

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论