count(1) and count(*),count(字段)区别及效率比较

 执行结果:

  count(1)和count(*)之间没有区别,因为count(*)count(1)都不会去过滤空值,

  count(字段) 会统计该字段在表中出现的次数,忽略字段为null 的情况。即不统计字段为null 的记录。

 

执行效率

(1)如果列为主键,count(列名)效率优于count(1)  ,count(主键列名)效率最优

(2)如果列不为主键,count(1)效率优于count(列名)  

(3)如果表多个列并且没有主键,则 count(1) 的执行效率优于 count(*)

(4)如果表只有一个字段,则 select count(*)最优。

 

关于count(1)count(*)原理 

count(1),其实就是计算一共有多少符合条件的行。1并不是表示第一个字段,而是表示一个固定值。其实就可以想成表中有这么一个字段,这个字段就是固定值1,count(1),就是计算一共有多少个1.

count(*),执行时会把星号翻译成字段的具体名字,效果也是一样的,不过多了一个翻译的动作,比固定值的方式效率稍微低一些。

posted @ 2020-08-24 09:09  长木木弓  阅读(511)  评论(0编辑  收藏  举报