MYSQL深度分页

今天做的需求,要取一个玩家角色表新建的角色id。新建的数据可能大批量。做功能的时候没有考虑性内存问题直接一次性全查了,但是该表数据可能很大,全查会很耗性能所以采用了循环分页查500条
,采用max id 每次去走主键索引增加查询效率避免深度分页问题 记录下 嘿嘿

int maxId=0;
do{
temp=SELECT * FROM report_create_role_online_time
 WHERE 1=1 and create_time>'xx' and id>maxId order by id asc LIMIT 500 //获取数据集
 list.addll(temp);
 int maxId= list.get(list.size-1).getId;
 }WHILE(temp.size!=0);

根据 maxid查询符合条件数据先获取前面500条,在获取数据集里的最后一个id 也就是id=500因为排好序了,或许下一个500条,有了主键索引避免了深度分页。直到查不到数据跳出循环

你可能感兴趣的:(sql,mysql)