MYSQL Count(*)和Count(1)区别
2016-03-31 00:00
465 查看
在SQL Server中Count(*)或者Count(1)或者Count([列])或许是最常用的聚合函数。很多人其实对这三者之间是区分不清的。本文会阐述这三者的作用,关系以及背后的原理。
往常我经常会看到一些所谓的优化建议不使用Count(* )而是使用Count(1),从而可以提升性能,给出的理由是Count( *)会带来全表扫描。而实际上如何写Count并没有区别。
Count(1)和Count(*)实际上的意思是,评估Count()中的表达式是否为NULL,如果为NULL则不计数,而非NULL则会计数。比如我们看代码1所示,在Count中指定NULL(优化器不允许显式指定NULL,因此需要赋值给变量才能指定)。
往常我经常会看到一些所谓的优化建议不使用Count(* )而是使用Count(1),从而可以提升性能,给出的理由是Count( *)会带来全表扫描。而实际上如何写Count并没有区别。
Count(1)和Count(*)实际上的意思是,评估Count()中的表达式是否为NULL,如果为NULL则不计数,而非NULL则会计数。比如我们看代码1所示,在Count中指定NULL(优化器不允许显式指定NULL,因此需要赋值给变量才能指定)。
相关文章推荐
- mysql having的用法
- MySQL 5.7初始密码
- mysql 修改密码
- Mysql主从复制
- Toad for MySQL 7.7 Freeware设置
- 第二节 join从句--内连接
- JDBC和JNDI 连接数据库(Mysql)的比较
- JDBC和JNDI 连接数据库(Mysql)的比较
- MySQL数据库
- MySql 中IFNULL、ISNULL和NULLIF区别
- mysql 数据类型
- 客户端工具用多了 有弊端;mysql一些知识
- MYSQL的常用命令和增删改查语句和数据类型
- 配置解压版mysql5.7方法
- 关于mysql的update、delete、和insert into能否使用别名问题
- mysql建索引杂谈
- mysql更改表结构:添加、删除、修改字段、调整字段顺序
- mysql优化经验
- 常用的三种修改mysql最大连接数的方法
- Mysql 关键字做表名,出现插不进去数据,解决方法