学习内容如下:
1.获得表行数的方法:用count()的实现方式,实现方式在不同引擎有不通的方式。
MyISAM 引擎:把一个表的总行数存在了磁盘上,因此执行 count() 的时候会直接返回这个数,效率很高;
InnoDB 引擎:它执行 count(*) 的时候,需要把数据一行一行地从引擎里面读出来,然后累积计数。
用InnoDB 引擎,当表的记录数越来越多的时候,计算一个表的总行数会越来越慢。
2.不同的count用法
count(*)、count(主键 id) 和 count(1) 都表示返回满足条件的结果集的总行数;
而 count(字段),则表示返回满足条件的数据行里面,参数“字段”不为 NULL 的总个数。
3.按照执行效率排
count(字段)<count(主键 id)<count(1)≈count()
因此建议尽量使用 count()。
网友评论