14.mysql count(*)

37 阅读1分钟

不同引擎下的count(*)

我们要计算数据表的行数,在MyISAM引擎里存着一个总数的参数,直接返回参数。在InnoDB里需要一行行统计数量。show status也可以统计行数,但是官方说有误差。

count效率

  • count(id)遍历表中所有id,根据id判断是否不为空
  • count(1)遍历表中数据,按返回的行累加
  • count(字段)根据设置的字段不是空,累加。是空,判断不是空才累加。

按照效率排序的话,count(字段)<count(主键id)<count(1)≈count(),所以我建议你,尽量使用count()。