MyISAM引擎,记录数是结构的一部分,已存cache在内存中;

   InnoDB引擎,需要重新计算,id是主键的话,会加快扫描速度;

   所以select count(*)  MyISAM完胜!

   MyISAM 在有where 条件存在的时候,速度与innodb引擎相当,都需要重新扫描记录,无其他优势;

   对于select count(*) & count(id)效率没有太大差别,都会扫描全表或者where之后的结果;

   select count(*) 会转换为count(1);

   count(id)只会计算 NOT NULL的值;

   使用注意事项:

   1、除非要统计某列非空值的总数,否则任何情况下一律使用count(*);

   2、除非需求特殊,否则count(*) 不要加where条件(MyISAM)

   3、在没有where条件的情况下,COUNT(*)等于COUNT(主键)优于COUNT(非主键有索引)优于COUNT(非主键无索引)

   4、只要加了WHERE就会降低效率,即使是WHERE 1=1

posted on 2019-12-03 16:15  幂次方  阅读(731)  评论(0编辑  收藏  举报