# MYSQL中的COUNT语句

参考博客

COUNT(1)和COUNT(*)之间有什么不同?

create table bla(id int,id2 int);
insert bla values(null,null);
insert bla values(1,null);
insert bla values(null,1);
insert bla values(1,null);
insert bla values(null,1);
insert bla values(1,null);
insert bla values(null,null);
1
2
3
4
5
6
7
8
count1

COUNT(常量) 和 COUNT(*)表示的是直接查询符合条件的数据库表的行数。 而COUNT(列名)表示的是查询符合条件的列的值不为NULL的行数。 COUNT(*)是SQL92定义的标准统计行数的语法,因为他是标准语法,所以MySQL数据库对他进行过很多优化。 count1 -MySQL官网: count1 所以,对于COUNT(1)和COUNT(*),MYSQL的优化是完全一样的,根本不存在谁比谁更快。 建议使用COUNT(*)! 因为这是SQL9.2定义的标准统计行数的语法。 COUNT(字段),他的查询就比较简单粗暴了,就是进行全表扫描,然后判断指定字段的值是不是为NULL,不为NULL则累加。相比COUNT(*),COUNT(字段)多了一个步骤就是判断所查询的字段是否为NULL,所以他的性能要比COUNT(*)慢。