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