//这个是第一种,取第20w开始的10w条数据
select * from table limit 100000 , 100000 order by id
//这是第二种取法
select * from table where id > 100000 limit 100000 order by id
因为mysql用limit越往后,排序之后取后面的越慢
你可以先select count(1) from table where 条件。看看一共有多少数据。大于N条的时候, 你再select * from table limit m,n 分页查询 2张表的话就 select * from table1 union all select * form table2 order by 某个字段。注意查询的列数量要一样。最好类型也一样
谢邀,对于数据量较大的结果集,我目前一般采用以下两种方式处理。采用这两种方式处理的目的就是:一是减少数据集获取时带宽资源的占用,二是减少程序对结果集处理时内存的使用。
分块,就是题主的思路
游标,按行读取返回
个人建议当你要查找后面的分块的时候,用
where条件而不是直接limit 100000 , 100000:二者区别举例如下:
直接通过sql语句就能搞定呀,不需要后台处理;可以排序呀,根据你指定字段
order by就行了连表查询
例如:SELECT a.* from tableA as a, tableB as b where a.id = b.id order by a.id desc limit 0,10000";
你可以先select count(1) from table where 条件。看看一共有多少数据。大于N条的时候,
你再
select * from table limit m,n分页查询2张表的话就
select * from table1 union all select * form table2 order by 某个字段。注意查询的列数量要一样。最好类型也一样假设表id均匀分布的情况下,可以利用ID的区间来分段查询数据