实习MySQL-select count(*)和select count
Posted 爱写Bug的王六六
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实习MySQL-select count(*)和select count相关的知识,希望对你有一定的参考价值。
最近遇到的sql语句中经常看到:
https://www.cnblogs.com/zyy1688/p/10436816.html
Count(*)
或者Count(1)
或者Count([列])
或许是最常用的聚合函数。
经常会看到一些所谓的优化建议不使用Count(* )而是使用Count(1),从而可以提升性能,给出的理由是Count( *)会带来全表扫描。而实际上如何写Count并没有区别。
Count(1)
和Count(*)
实际上的意思是,评估Count()中的表达式是否为NULL,如果为NULL则不计数,而非NULL则会计数。
对于Count(列)
来说,评估列中每一行的值是否为NULL,如果为NULL则不计数,不为NULL则计数。因此Count(列)会计算列或这列的组合不为空的计数。
如果该表只有一个主键索引,没有任何二级索引的情况下,那么COUNT(*)
和COUNT(1)
都是通过通过主键索引来统计行数的。如果该表有二级索引,则COUNT(1)
和COUNT(*)
都会通过占用空间最小的字段的二级索引进行统计, 这里统计行数的操作,查询优
以上是关于实习MySQL-select count(*)和select count的主要内容,如果未能解决你的问题,请参考以下文章