MySQL count()函数及其优化count(1),count(*),count(字段)区别

很简单,就是为了统计记录数 由SELECT返回

为了理解这个函数,让我们祭出 employee_tbl 表

所有记录

统计行的总数

计算 Zara 的记录数

注意:由于 SQL 查询对大小写不敏感,所以在 WHERE 条件中,无论是写成 ZARA 还是 Zara,结果都是一样的

count(1),count(*),count(字段)区别

count(1)和count(*)

作用

都是检索表中所有记录行的数目,不论其是否包含null值

区别

count(1)比count(*)效率高

二 . count(字段)与count(1)和count(*)的区别

count(字段)的作用是检索表中的这个字段的非空行数,不统计这个字段值为null的记录

  • 任何情况下SELECT COUNT(1) FROM tablename是最优选择
  • 尽量减少SELECT COUNT(*) FROM tablename WHERE COL = ‘value’ 这种
  • 杜绝SELECT COUNT(COL) FROM tablename WHERE COL2 = ‘value’ 的出现
  • 如果表没有主键,那么count(1)比count(*)快
  • 如果有主键,那么count(主键,联合主键)比count(*)快
  • 如果表只有一个字段,count(*)最快

count(1)跟count(主键)一样,只扫描主键。 count(*)跟count(非主键)一样,扫描整个表 明显前者更快一些。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏WindCoder

当 NOT NULL DEFAULT遇到 Invalid use of NULL value

ERROR 1138 (22004) at line 7: Invalid use of NULL value

2011
来自专栏MYSQL轻松学

insert事务产生duplicate key error引发的死锁分析

先看程序报错: 2017-06-12 21:18:40.856 [ForkJoinPool.commonPool-worker-12] ERROR com....

7414
来自专栏idba

MySQL 各种SQL语句加锁分析

Locking read( SELECT ... FOR UPDATE or SELECT ... LOCK IN SHARE MODE),UPDATE以及DE...

1152
来自专栏散尽浮华

利用mk-table-checksum监测Mysql主从数据一致性操作记录

前面已经提到了mysql主从环境下数据一致性检查:mysql主从同步(3)-percona-toolkit工具(数据一致性监测、延迟监控)使用梳理 今天这里再介...

3708
来自专栏史上最简单的Spring Cloud教程

Openresty最佳案例 | 第8篇:RBAC介绍、sql和redis模块工具类

RBAC介绍 RBAC(Role-Based Access Control,基于角色的访问控制),用户基于角色的访问权限控制。简单地说,一个用户拥有若干角色,每...

3238
来自专栏Netkiller

数据库安全·Token 认证

以下节选择《Netkiller Architect 手札》 作者:netkiller 地址 http://www.netkiller.cn/archit...

3904
来自专栏landv

金蝶K/3 固定置产相关SQL语句

971
来自专栏我的博客

MySQL触发器

1、触发器定义就不说了,既然能看到我这个文章就肯定明白这个定义了。用途也不多说,来看继续向下看吧! 触发器语法: CREATE TRIGGER <触发器名称...

2755
来自专栏一个会写诗的程序员的博客

SQL中的DML、DDL以及DCL是什么?

DML(data manipulation language)是数据操纵语言:它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这...

904
来自专栏mwangblog

开始使用MySQL

1762

扫码关注云+社区

领取腾讯云代金券