count(可空字段)

扫描全表,读到server层,判断字段可空,拿出该字段所有值,判断每一个值是否为空,不为空则累加

count(非空字段)与count(主键 id)

扫描全表,读到server层,判断字段不可空,按行累加。

count(1)

扫描全表,但不取值,server层收到的每一行都是1,判断不可能是null,按值累加。

注意:count(1)执行速度比count(主键 id)快的原因:从引擎返回 id 会涉及到解析数据行,以及拷贝字段值的操作。

count(*)

MySQL 执行count(*)在优化器做了专门优化。因为count(*)返回的行一定不是空。扫描全表,但是不取值,按行累加。

看到这里,你会说优化器就不能自己判断一下吗,主键 id 肯定是非空的,为什么不能按照 count(*) 来处理,多么简单的优化。当然 MySQL 专门针对这个语句进行优化也不是不可以。但是这种需要专门优化的情况太多了,而且 MySQL 已经优化过 count(*) 了,你直接使用这种语句就可以了。

性能对比结论

count(可空字段) < count(非空字段) = count(主键 id) < count(1) ≈ count(*)

数据库面试题【十九、count(字段) count(主键 id) count(1)count(*)的区别】相关推荐

  1. Mysql插入数据并返回其主键id

    1.背景 将数据插入到数据库中,并返回其主键id 2.思考 在插入的SQL语句里执行查询主键SQL语句 3.解决方案 <insert id="insertAndselectLastIn ...

  2. datagrid如何获取一行数据中的某个字段值_或许是全网最全面关于数据库面试题...

    原文: https://www.enmotech.com/web/detail/1/794/1.html 两万字全面论述数据库面试题(上) https://www.enmotech.com/web/d ...

  3. C# 联合查询_直击数据库面试题:数据库查询语句

    Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 问题 ...

  4. MySQL数据库面试题(2021最新版)

    文章目录:http://github.crmeb.net/u/defu 数据库基础知识 为什么要使用数据库 什么是SQL? 什么是MySQL? 数据库三大范式是什么 mysql有关权限的表都有哪几个 ...

  5. mysql纵表 主键_数据库面试题-sql语句

    原标题:数据库面试题-sql语句 1,写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的. 答: → 解1: select top ...

  6. 在Mysql中count(*)、count(1)与count(字段/列名)的详解—聚合函数count

    目录 一.简单区别 二.效率比较 三.举例 3.1创建表 3.1.1利用count(*)进行统计所有行的数目 3.1.2利用count(1)进行统计所有行的数目 3.1.3利用count(字段/列名) ...

  7. 数据库面试题(SQL语句)

    查询表A中存在ID重复三次以上的记录 Select * From A Where id in(select ID from A group by id having count(id)>3) 一 ...

  8. SQL编程软件测试,编程程题库之软件测试8大常见数据库面试题

    原标题:编程程题库之软件测试8大常见数据库面试题 一.事务的四大特性 原子性,要么执行,要么不执行 隔离性,所有操作全部执行完以前其它会话不能看到过程一致性,事务前后,数据总额一致持久性,一旦事务提交 ...

  9. Oracle数据库面试题 精选 Oracle 面试题

    Oracle数据库面试题 1.解释冷备份和热备份的不同点以及各自的优点 冷备份 发生在数据库已经正常关闭的情况下,将关键性文件拷贝到另外位置的一种说法.适用于所有模式的数据库. 优点 1. 是非常快速 ...

最新文章

  1. Design Pattern - Command (C#)
  2. scanf中的%[^\n]%*c格式
  3. eclipse定义和修改模板
  4. Python之UDP通讯简单例子
  5. 找到软件供应链的薄弱链条
  6. 腾讯正式宣布成立技术委员会!要对组织架构下狠手
  7. 电商网站开发设计方案、电商网站开发重要性
  8. TCP/UDP测试工具下载及使用教程
  9. 关于ActionForm的一些问题
  10. Android获取本地IP
  11. 任务管理器显示命令行
  12. 如何渡过小白期,不再当菜鸟程序员?
  13. 考古表明陕西银沟遗址是目前仅见保存完好的唐宋县城遗址
  14. Ubuntu vi 方向键乱码 问题解决
  15. 算法——从9个硬币中找出其中的1枚假硬币
  16. alpha和color key
  17. 运用大数据防控互联网金融犯罪
  18. 转:中国人世界观的变化
  19. 【阿里云】深入分析阿里云中图片服务的架构经验
  20. r5 5600u和i5 10300h 选哪个

热门文章

  1. ubuntu ftp服务器搭建,绝对有效,操作简单
  2. [TCP/IP]TCP服务端accept发生在三次握手的哪一个阶段
  3. 通过迭代(非递归)及递归将单链表逆序
  4. LAMP和LNMP去除index.php访问
  5. Hadoop概念学习系列之Hadoop 生态系统
  6. XML中需要转义的字符
  7. python 批量更换图片格式脚本
  8. Python查询MySQL进行远程采集图片实例
  9. 为ActiveX制作数字签名 -- 介绍 (引)
  10. Dbus的编译和安装