时间:2020-08-31来源:www.pcxitongcheng.com作者:电脑系统城
count函数暗藏很多玄机,学习之前先尝试回答以下几个问题吧:
> 1、COUNT有几种用法? > 2、COUNT(字段名)和COUNT(*)的查询结果有什么不同? > 3、COUNT(1)和COUNT(*)之间有什么不同? > 4、COUNT(1)和COUNT(*)之间的效率哪个更高? > 5、为什么《阿里巴巴Java开发手册》建议使用COUNT(*) > 6、MySQL的MyISAM引擎对COUNT(*)做了哪些优化? > 7、MySQL的InnoDB引擎对COUNT(*)做了哪些优化? > 8、上面提到的MySQL对COUNT(*)做的优化,有一个关键的前提是什么? > 9、SELECT COUNT(*) 的时候,加不加where条件有差别吗? > 10、COUNT(*)、COUNT(1)和COUNT(字段名)的执行过程是怎样的?
> count(常量)和count(*)表示的是直接查询符合条件的数据库表的行数。 > count(列名)表示的是查询符合条件的列的值不为NULL的行数。
MySQL官方文档这么说:
InnoDB handles SELECT COUNT(*) and SELECT COUNT(1) operations in the same way. There is no performance difference.
> 所以,对于count(1)和count(*),MySQL的优化是完全一样的,根本不存在谁更快! > 但依旧建议使用count(*),因为这是SQL92定义的标准统计行数的语法。
> 进行全表扫描,判断指定字段的值是否为NULL,不为NULL则累加。 > 性能比count(1)和count(*)慢。
> COUNT函数的用法,主要用于统计表行数。主要用法有COUNT(*)、COUNT(字段)和COUNT(1)。 > 在InnoDB中COUNT(*)和COUNT(1)实现上没有区别,而且效率一样,但是COUNT(字段)需要进行字段的非NULL判断,所以效率会低一些。 > 因为COUNT(*)是SQL92定义的标准统计行数的语法,并且效率高,所以请直接使用COUNT(*)查询表的行数!
2023-10-30
windows上的mysql服务突然消失提示10061 Unkonwn error问题及解决方案2023-10-30
MySQL非常重要的日志bin log详解2023-10-30
详解MySQL事务日志redo log一、单表查询 1、排序 2、聚合函数 3、分组 4、limit 二、SQL约束 1、主键约束 2、非空约束 3、唯一约束 4、外键约束 5、默认值 三、多表查询 1、内连接 1)隐式内连接: 2)显式内连接: 2、外连接 1)左外连接 2)右外连接 四...
2023-10-30
Mysql删除表重复数据 表里存在唯一主键 没有主键时删除重复数据 Mysql删除表中重复数据并保留一条 准备一张表 用的是mysql8 大家自行更改 创建表并添加四条相同的数据...
2023-10-30