上一篇谈到了我们日常开发中经常需要用到的分页,在业务数据量不多的情况下,我们直接用limit指定偏移量就可以满足我们业务需求了,但是数据量大的时候使用limit指定偏移量性能会很低,因为需要全表检索。所以上一篇主要提到了几种可以优化分页的方案,而且分页业务一般都伴随着需要count函数查询总条数,所以本篇文章主要讲讲count函数的一般优化方案。
为什么分页一般要伴随查询数量?举个简单的例子:我们实现一个博客首页,我们按照十篇/页渲染,这样我们服务端必须查询给客户端当前页面10篇文章的数据,并且同时得告诉客户端一共有多少页的数据,所以这个时候的业务需求就变成分页 + count函数查询条数的逻辑了,而是大部分分页往往伴随着需要查询总数量的业务。
首先创建一个表,只有id,name,sex三个字段,使用存储过程随机插入100万条数据:
首先,我们先贴下最基本的count函数语法:
select count(expr) from table;
可以看到count函数实际上需要传入expr,这个expr一般取值有以下三个:
列名:会检索对应列值不为NULL的条数。
*:查询符合条件的行数,和列值是否为NULL无关,返回结果都会返回。
常量:查询符合条件的行数,和