mysql count(*) 和count(1)区别

count *更快, 不要加where,否则同count(1)效率相同

sql语句对大小写不敏感,关键字一般大写,其他小写,

count(*)不加where,mysql会直接返回总条数,因为mysql引擎存储了总条数。

count(*)查询表记录是多少行,count(col)是查询 (not null)的个数 

假设是myisam引擎,记录数是结构的一部分,已经cache在内存中了,很快就可以得到结果 ,而innodb仍然需要计算,id如果 是主键索引 的话,无疑会回忆速度,

除非 要统计某列非空值的总数 ,否则 任何情况一律用COUNT(*),效率比COUNT(列名)高很多,

除非 有特殊需要,count(*)不要加where条件,会影响效率,如果 加了条件count(*)和count(主键)效率一到,count(非主键)效率很低,

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

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

原文地址:https://www.cnblogs.com/xqnq2007/p/7754712.html