count(1)、count(*)、count(字段)的区别

 

很多人认为count(1)执行的效率会比count()高,原因是count()会存在全表扫描,而count(1)可以针对一个字段进行查询。其实不然,count(1)和count(*)都会对全表进行扫描,统计所有记录的条数,包括那些为null的记录,因此,它们的效率可以说是相差无几。而count(字段)则与前两者不同,它会统计该字段不为null的记录条数。

下面它们之间的一些对比:

1)在表没有主键时,count(1)比count(*)快;

2)有主键时,主键作为计算条件,count(主键)效率最高;

3)若表格只有一个字段,则count(*)效率较高。

 

count(1)和count(*)  ---  都为统计所有记录数,包括null

执行效率上:当数据量1W+时count(*)用时较少,1w以内count(1)用时较少

count(字段)  ---  统计字段列的行数,不包括null

若字段为主键则count(主键)效率最高,否则少量数据时使用count(1)

总结:少量数据不忽略null选count(1),大量数据选count(*),忽略null选count(字段)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章