count(*)、count(1)、count(id)计数查询有什么区别?

提问者:帅平 问题分类:面试刷题
count(*)、count(1)、count(id)计数查询有什么区别?
1 个回答
你是我此生最美的风景
你是我此生最美的风景
当我们执行count()时,会遍历表中的每一行的,如果表只有一个聚集索引,那就会进行全部扫描,但是如果表中有多个索引,则会选择占用页数最少的索引,遍历它的叶子节点即可,因为不管是什么字段构建的索引,数据条数都是一样的,比如,聚集索引的叶子节点中有10000条数据,每条数据有5个字段,而另外一个辅助索引的叶子节点中肯定也有10000条数据,只不过每条数据可能只有2个字段,此时辅助索引占用的页数肯定更少,但是条数是一样的,此时count()就会走辅助索引来提高统计速度。
因此,count(*)和count(1)、count(0)这些本质没有区别,都不会取出具体的字段内容,但是count(id)、count(name)这些就会取出具体的字段内容,并进行判null,不为null才进行count++。
发布于:2个月前 (08-01) IP属地:四川省
我来回答