前提
由于我们项目分表的方式比较特殊(手写的分表代码):每张表只能存固定条数的记录,超过该记录数,则新增一张表。但这并不影响我这里提出一个分表分页查询思路。
分表分页查询思路
- 第一次查询所有分表,符合条件的记录的主键ID列表
- 根据第一次查询的主键ID列表,查询对应记录
例子
查询第1页,页面大小为10,姓名=小明的数据
第一次查询:每张表执行如下语句,获取所有表符合条件的记录主键ID,返回id列表
如果select全部字段,数据量起来容易导致内存不足,因此仅查询ID可以解决这个问题
select id from table where name = "小明";
第二次查询:根据主键ID,查询记录
select * from table where id in (ids);