具体实现中,根据所用数据库、数据量、实现分页方式,选择分页实现快的方式实现。
  一、MYSQL分页查询方法
  MYSQL分页查询主要使用其自带的limit函数,但需根据查询量来决定具体的使用方式,如只有几千或几万数据,则直接用 limit m,n方式,
  如数据量较多,则要注意limit的使用方式。
  // limit m , n:从第 m 条数据开始,获取 n 条数据
  1、数据量少的方式:select * from tablename limit m,n;
  // limit m , n:m 可省略,省略或默认从结果集的第 0 条 开始
  2、数据量多的方式:
  // 从490000开始取10条
  a.  select * from tablename where id>=(select id from tablename limit 490000,1) limit 10 ;
  b.  select * from tablename limit 490000,10 ;
  a 方式要比 b方式快
  二、DB2分页查询方法
  DB2分页查询方法主要以 rownumber() over() 函数方式实现,如下:
  select * from(select 字段1,字段2...rownumber() over(order by id desc) as rn from tablename where...) as t1
  where t1.rn between m and n / t1.rn >m and t1.rn <= n;
  三、ORACLE分页查询方法
  ORACLE分页查询主要以rownum关键字和rownumber() over()函数实现,如下:
  1、rownum关键字--无排序--获取 n 到 m条数据
  a. 在查询的第二层通过ROWNUM <= m 来控制大值,在查询的外层控制小值:
  select * from (
  select a.*, rownum rn from (
  select * from tablename) a
  where rownum <= m)
  where rn >= n
  b.  直接在外层控制大值小值
  select * from (
  select a.*, rownum rn from (
  select * from tablename) a)
  where rn between n and m
  //在绝大多数情况下,a方式要比b方式快的多
  2、rownum关键字--需排序--获取 n 到 m条数据
  // 错误方式
  select * from
  (select t.*,rownum rn from mytable t order by t.id) b
  where b.row_num between n and m
  //错误原因:上面sql会先执行 rownum rn产生行号,再 执行order by 排序,但是后结果通过rn即行号获取,order by排序不起作用
  // 正确做法:先排序,对排序后的结果生成行号,则根据rn获取结果获取到的是排序后的结果
  //正确方式:再加一层先排序
  select * from
  (select a.*, rownum rn from (select * from tablename order by id)a)b
  where b.rn between n and m
  3、rownum() over()方式--同db2方式
  select * from(select 字段1,字段2...rownumber() over(order by id desc) as rn from tablename where...) as t1
  where t1.rn between m and n / t1.rn >m and t1.rn <= n;