MySQL中count(*)、count(1)和count(列名)之间的区别

问题:用count(*),count(1),count(列名)谁好呢?
  其实,对于MyISAM引擎的表是没有区别的。这种引擎内部有一计数器在维护着行数。Innodb引擎的表用count(*),count(1)直接读行数,复杂度是O(n),因为innodb真的要去数一遍。但好于具体的count(列名)。
 
问题:能不能使用count(列名)替换count(*)?
不要使用 count(列名)来替代 count(*) , count(*) 是 SQL92 定义的标准统计行数的语法,跟数据库无关,跟 NULL 和非 NULL 无关。
说明:count(*)会统计值为 NULL 的行,而 count(列名)不会统计此列为 NULL 值的行。
posted @ 2022-03-21 15:13  谁怕?一蓑烟雨任平生  阅读(57)  评论(0)    收藏  举报