文章目录

  • 三者的计数方式
  • 三者的执行效果
  • 三者的执行效率

三者的计数方式

count(1):
count(1)会统计表中所有的记录数,包括字段为null的记录。

count(*):
count(*)包括了所有列,相当于行数,在统计结果的时候,不会忽略列值为null的,即使某一行的所有列全为null也不会忽略当前行,即最终返回行数。

count(字段):
count(字段)会统计该字段在表中出现的次数,忽略字段为null的情况。即如果该字段为null,那么不进行统计。

三者的执行效果

count(1):
count(1)忽略了所有列,每一列都被使用1来代表,在统计结果的时候,不会忽略列值为null的行,即使某一行所有列都为null,也不会忽略当前行。

count(*):
count(1)包括了所有列,相当于行数,在统计结果的时候,不会忽略列值为null的行,即使某一行所有列都为null,也不会忽略当前行。

count(字段):
count(字段)只包括列名那一列,在统计结果的时候,会忽略列值为空的技术,即如果某一列的当前字段为null,那么不对当前行进行计数。

三者的执行效率

字段为主键时:
count(字段) > count(1)
原因:当某一字段为主键,MySQL自动为当前字段列添加主键索引。主键索引使用B+Tree实现,相比于将每一列都设置为1然后计数效率更高。

字段不为主键:
count(字段) < count(1)
原因:当字段不为主键时,没有主键索引,那么对字段进行count操作,可想而知,首先需要先判断当前字段是否为null,然后再进行计数,而count(1)显然没有这么繁琐。

表有多列且没有主键(基本不会出现):
count(1) ≈ count(*)
MySQL底层对count( * )进行了优化 ,使得其拥有较高的效率。

有主键:
当有主键的时候,select (主键)的执行效率最高。

表有且仅有一个字段:
如果表只有一个字段,那么select (*)的效率最高。

总结:
执行效率上, count(* )> count (1) > count(主键id) >count(字段)
因此尽量使用 count(*)

【MySQL】count(1)、count(*)、count(字段)、count(主键)的区别相关推荐

  1. MySql基础篇---003 SQL之DDL、DML、DCL使用篇:创建和管理表 ,数据处理之增删改,MySQL数据类型精讲 ,约束:联合主键

    第10章_创建和管理表 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. 基础知识 1.1 一条数据存储的过程 存储数据是处理数据的第一步.只有正确地 ...

  2. mysql getgeneratedkeys,JDBC获得数据库生成的主键(JDBC、Primary Key)

    JDBC获得数据库生成的主键 佟强 http://blog.csdn.net/microtong 在实际开发中,数据库中表的主键经常会由数据库负责生成,INSERT语句插入数据时插入除了主键以外的字段 ...

  3. python mysql批量insert数据、返回id_Python3 操作 MySQL 插入一条数据并返回主键 id的实例...

    Python 中貌似并没有直接返回插入数据 id 的操作(反正我是没找到),但是我们可以变通一下,找到最新插入的数据 #!/usr/bin/env python3 # -*- coding: UTF- ...

  4. oracle查询表的字段类型有哪些,oracle中查询表的信息,包括表名,字段名,字段类型,主键(精)...

    通过搜索摸索,总结了一下 oracle 中查询表的信息,包括表名,字段名,字段类型,主键, 外键唯一性约束信息,索引信息查询 SQL 如下,希望对大家有所帮助: 1.查询出所有的用户表 select ...

  5. 【mysql】mysql 中 text,longtext,mediumtext 字段类型的意思, 以及区别

    mysql 中 text,longtext,mediumtext 字段类型的意思, 以及区别 mysql 中 text,longtext,mediumtext 字段类型区别为:字节限制不同.I/O 不 ...

  6. mysql之列属性篇四之 —— 主键(primary key)

    主键 顾名思义:主要的键,primary key,在一张表中,有且只有一个字段,里面的值具有唯一性 创建主键 随表创建 系统提供了两种增加主键的方式 1. 方案1:直接在需要当做主键的字段之后,增加p ...

  7. mysql创建主键索引的关键字使用_mysql字段、主键、索引等的创建与修改命令

    //主键 alter table tabelname add new_field_id int(5) unsigned default 0 not null auto_increment ,add p ...

  8. mysql用命令修改主键名_MySQL的常用命令:添加外键,修改字段名称,增加字段 设置主键自增长等...

    Mysql命令添加外键 前提是有这么几个表   以mall_product 和 mall_category为例 ALTER TABLE mall_product ADD CONSTRAINT fore ...

  9. mysql用命令修改主键名_MySQL的常用命令:添加外键,修改字段名称,增加字段 设置主键自增长等 落楝花...

    Mysql命令添加外键 前提是有这么几个表   以mall_product 和 mall_category为例 ALTER TABLE mall_product ADD CONSTRAINT fore ...

最新文章

  1. tcp http https
  2. Windows APC学习笔记(一)—— APC的本质备用APC队列
  3. cordova 插件开发
  4. getopt java_Java命令行界面(第28部分):getopt4j
  5. 【NOIP2017模拟6.25】小W的动漫
  6. Ubuntu设置root登录
  7. 10分钟让你学会使用Vuex
  8. Android开发学习之ImageView手势拖拽、缩放、旋转
  9. airpodspro没有弹窗_Airpods Pro开盖没有弹窗怎么办
  10. Redmine使用介绍
  11. python蓝牙控制手机打电话_树莓派 python bluetooth,用pybluez控制蓝牙
  12. 口袋小精灵JAVA版下载_口袋小精灵200合一
  13. android 定时器 误差,运动会计时器(PC+安卓)版本
  14. 如何使用Qt调试飞机大战
  15. 教程:实现WinUSB通信系统的最简单的方式
  16. 小米8Lite刷机教程(大多数手机操作基本通用)
  17. IT类电子图书下载站点合集
  18. 把路由器塞进弱电箱——以京东云无线宝一代为例
  19. MFC深入浅出之一MFC基础
  20. Photoshop制作清晰的透明PNG图片的方法和技巧

热门文章

  1. airplay android服务器,在airplay中实现android作为服务器(接收器)
  2. redis常见面试题
  3. 红米k30支持html,红米K30s屏幕怎么样-红米K30s支持高刷吗
  4. 【无标题】智能代还软件没有你想的那么复杂
  5. 【星球精选】Obsidian 中的 excalibrain 插件:免费的 theBrain ?
  6. php语言头像,使用PHP语言通过邮箱获取全球公认的Gravatar头像地址
  7. 阿里+字节工作几年,中度抑郁了
  8. Unity_Shader_卡通动画效果
  9. javaWeb——图片验证
  10. mac电脑怎么使用自带截图?