赞
踩
count()的用法:主要用于查询表中数据的数量,常用的查询语句有count(*),count(字段),count(1),count(主键)。
会遍历所有主键取出所有的值并按行累加,因为主键不会为空,最终会返回总的行数。
会遍历所有该字段,如果为null则跳过,否则取出并累加,最后返回的是非null的总和。
会遍历整张表,但不取值,直接计算行数。因此count(1)的性能要高于count(主键)。
和count(主键)相比,count(1)少了一个取值的动作,减少的这个取值的动作使得count(1)的效率高于count(主键)。
count()的用法在早期的数据库和现在的数据库中有较大的差距。
在早期的数据库中,count()有可能会导致全表的扫描,因此效率会低。
如今的数据库引擎对count()做了优化,比如MyIsam引擎中count()会直接读取一个总行数的值,因此速度是最快的,InnoDB也同样对count()做了优化,用类似count(1)的方式获取行数,因此count()效率接近count(1)。
执行效率:count(列名) < count(主键) < count(1) ≈ count(*)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。