count(*)、count(1)和count(列名)的区别
2019-07-09 23:05
106 查看
count是一种最简单的聚合函数,一般也是我们第一个开始学习的聚合函数,那么他们之间究竟由什么区别呢?
有的人说count(1)和count(*)他们之间有区别,而有的人说他们之间没有区别那么他们之间到底有没有区别呢。
从执行结果来说:
count(1)和count(*)之间没有区别,因为count(*)count(1)都不会去过滤空值, 但count(列名)就有区别了,因为count(列名)会去过滤空值。
从执行效率来说:
他们之间根据不同情况会有些许区别,MySQL会对count(*)做优化。 (1)如果列为主键,count(列名)效率优于count(1) (2)如果列不为主键,count(1)效率优于count(列名) (3)如果表中存在主键,count(主键列名)效率最优 (4)如果表中只有一列,则count(*)效率最优 (5)如果表有多列,且不存在主键,则count(1)效率优于count(*)
相关文章推荐
- COUNT(*)与COUNT(列名)的区别
- count(*) 和 count(1)和count(列名)区别
- count(1)、count(*)与count(列名)的执行区别
- 用count(*)还是count(列名) || Mysql中的count()与sum()区别
- java07_几张图了解count(*)与count(列名)的区别
- count(*) 和 count(1)和count(列名)区别
- select count(*) 和 count(1),count(列名)区别
- count(1)、count(*)与count(列名)的执行区别
- count(*) 和 count(1)和count(列名)区别
- count(*) 和 count(1)和count(列名)区别
- Oracle 中count(1) 、count(*) 和count(列名) 函数的区别
- 数据库(oracle、mysql)中的count(*)和count(列名)的区别
- count(1),count(*)和count(列名)三者的区别
- count(*) 和 count(1)和count(列名)区别
- COUNT(*)与COUNT(列名)的区别(转)
- COUNT(*)与COUNT(列名)的区别
- 关于数据库优化1——关于count(1),count(*),和count(列名)的区别,和关于表中字段顺序的问题
- select count(*)和select count(1)的区别 (转)
- MySQL count(*),count(1)与count(column)区别
- Oracle 中count(1) 和count(*) 的区别