MySQL count
在使用count进行数据统计行数时,有时候会使用count(*)
,有时候会使用count(1)
,有时候会使用count(列名)
,那么这些有什么不同呢
当使用列名作为参数时,count函数会自动忽略null值,如果这个字段上有索引的话,会使用索引;
而使用*
或者常量时,就会包含null值。在innodb中count(*)
和count(1)
是一样的。count(*)
会选择最小的非主键索引,如果没有非主键索引,会使用主键
1 | select count(*),count(1),count(source) from doc |