说明
平时工作最不陌生的就是对数据库的 CRUD 操作,尤其在需要进行分页查询时,要先根据给定参数查询符合条件的记录行数,这里就要使用到 MySQL 的 COUNT() 函数。本篇博文,我将通过 MySQL 的官方文档,来介绍 COUNT() 函数的使用,以及 COUNT(列名)、COUNT(1) 和 COUNT(*) 的区别,还有 MySQL 对 COUNT() 函数进行了哪些优化。
正文
在 MySQL 关于优化的文档中,在 WHERE Clause Optimization 章节,有这样一段话:
COUNT(*) on a single table without a WHERE is retrieved directly from the table information for MyISAM and MEMORY tables. This is also done for any NOT NULL expression when used with only one table.
在单表的 COUNT(*) 函数并且没有 WHERE 语句的查询中,对 MyISAM 和 MEMORY 类型的表将直接从表信息中获取结果,同时对于单表的含 NOT NULL 表达式的 COUNT() 函数查询也同样如此。
COUNT(expr)
接下来,再看文档中对