数据库面试题【十九、count(字段) count(主键 id) count(1)count(*)的区别】
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(*)的区别】相关推荐
- Mysql插入数据并返回其主键id
1.背景 将数据插入到数据库中,并返回其主键id 2.思考 在插入的SQL语句里执行查询主键SQL语句 3.解决方案 <insert id="insertAndselectLastIn ...
- datagrid如何获取一行数据中的某个字段值_或许是全网最全面关于数据库面试题...
原文: https://www.enmotech.com/web/detail/1/794/1.html 两万字全面论述数据库面试题(上) https://www.enmotech.com/web/d ...
- C# 联合查询_直击数据库面试题:数据库查询语句
Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 问题 ...
- MySQL数据库面试题(2021最新版)
文章目录:http://github.crmeb.net/u/defu 数据库基础知识 为什么要使用数据库 什么是SQL? 什么是MySQL? 数据库三大范式是什么 mysql有关权限的表都有哪几个 ...
- mysql纵表 主键_数据库面试题-sql语句
原标题:数据库面试题-sql语句 1,写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的. 答: → 解1: select top ...
- 在Mysql中count(*)、count(1)与count(字段/列名)的详解—聚合函数count
目录 一.简单区别 二.效率比较 三.举例 3.1创建表 3.1.1利用count(*)进行统计所有行的数目 3.1.2利用count(1)进行统计所有行的数目 3.1.3利用count(字段/列名) ...
- 数据库面试题(SQL语句)
查询表A中存在ID重复三次以上的记录 Select * From A Where id in(select ID from A group by id having count(id)>3) 一 ...
- SQL编程软件测试,编程程题库之软件测试8大常见数据库面试题
原标题:编程程题库之软件测试8大常见数据库面试题 一.事务的四大特性 原子性,要么执行,要么不执行 隔离性,所有操作全部执行完以前其它会话不能看到过程一致性,事务前后,数据总额一致持久性,一旦事务提交 ...
- Oracle数据库面试题 精选 Oracle 面试题
Oracle数据库面试题 1.解释冷备份和热备份的不同点以及各自的优点 冷备份 发生在数据库已经正常关闭的情况下,将关键性文件拷贝到另外位置的一种说法.适用于所有模式的数据库. 优点 1. 是非常快速 ...
最新文章
- Design Pattern - Command (C#)
- scanf中的%[^\n]%*c格式
- eclipse定义和修改模板
- Python之UDP通讯简单例子
- 找到软件供应链的薄弱链条
- 腾讯正式宣布成立技术委员会!要对组织架构下狠手
- 电商网站开发设计方案、电商网站开发重要性
- TCP/UDP测试工具下载及使用教程
- 关于ActionForm的一些问题
- Android获取本地IP
- 任务管理器显示命令行
- 如何渡过小白期,不再当菜鸟程序员?
- 考古表明陕西银沟遗址是目前仅见保存完好的唐宋县城遗址
- Ubuntu vi 方向键乱码 问题解决
- 算法——从9个硬币中找出其中的1枚假硬币
- alpha和color key
- 运用大数据防控互联网金融犯罪
- 转:中国人世界观的变化
- 【阿里云】深入分析阿里云中图片服务的架构经验
- r5 5600u和i5 10300h 选哪个