【实习】MySQL-select count(*)和select count(1)

最近遇到的sql语句中经常看到:
【实习】MySQL-select count(*)和select count(1)_第1张图片
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,java,数据库)