最近项目中优化sql,到底使用哪个count(*)、count(常量)、count(主健)、count(字段)

180 阅读1分钟

最近项目中优化sql,到底使用哪个count(*)、count(常量)、count(主健)、count(字段)。其实分析会发现在innodb、myisam模式下结果是不一样的。

1、myisam模式下默认就保存了总记录数,所以myisam查询是直接出结果大概也就1ms出结果

2、innodb模式下,  count(字段)->count(主键id)->count(1)≈count(*)  最快的就是count(常量)与count(*) 。差别并不太大。

当然上面2个均是查询没带where条件的情况下,不过带上条件count(常量)与count(*)两者情况也差不多,至于有的博客说count(*)最快,有的博客说count(1)更快,感觉都与环境与条件相关比如带不带查询条件,表有没有主健,索引等等因素。

总结:

建议使用count(*),阿里云开发手册SQL第一条规范: