有一种方法一次得到总数
select sql_calc_found_rows  Field,Field from TableName  limit 1;
select found_rows();
但是这个得到总数是滞后的,不能先得到,然后计算limit应该从哪一条开始取,所以无论如何,可以考虑将总条数先缓冲/保存起来,等一会再用,靠……另外一种说法,如果能够按照一个已经索引的字段,比如自增长的,
如果现在从第1000条开始取5000,那么,先找到第1000条的这个自增长字段值,select Field from TableName limit 1000
然后
select * from TableName where Field>刚才的得到的字段值 limit 5000
也就是,第二次查询,mysql不需要先排序,从头数起,数到1000,然后再取5000,而是直接根据那个唯一自增长号,从那个号开始,往后取5000条
据说快一点……