关于mysql:mysqlcount方法

MyISAM 引擎把一个表的总行数存在了磁盘上,因而执行 count(*) 的时候会间接返回这个数,效率很高
InnoDB 引擎执行 count(*) 的时候,须要把数据一行一行地从引擎外面读出来,而后累积计数

count(id) innoDB会遍历表,把id取出来,返回server层,server层进行判断,不为空则累加1;
count(1) innoDB会遍历表,但不取出来,返回server层,server层进行判断,不为空则累加1;
count(字段)innoDB会遍历表,把字段取出来,返回server层,server层进行判断,不为空则累加1;
count() innoDB专门做了优化,不取值,cout()必定不是null,按行累加

效率排序:
count(字段)<count(主键 id)<count(1)≈count(*)
尽量应用count(*)

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理