数据库分页

oracle:

  1.无orderby:

特点:一层嵌套,速度最快 

SELECT *
  FROM ( Select ROWNUM AS RN, T.*
       from tablename T
      where
      ROWNUM <= 20) TA
WHERE TA .RN>= 10;

2.有orderby的查询
特点:效率最高
SELECT *
  FROM ( SELECT TT.*, ROWNUM ROWNO
       FROM ( Select t.*
           from tablename t
           where
           ORDER BY id(索引) , flight_no) ta
      WHERE ROWNUM <= 20) TABLE_ALIAS
where ta.rowno >= 10;


mysql:
limit基本语法
select * from table limit m,n
其中m是指记录开始的index,从0开始,表示第一条记录
n是指从第m+1条开始,取n条。
select * from tablename limit 2,4
即取出第3条至第6条,4条记录
小数量级
select * from tablename  orderby  id   limit  pagesize*(pagenum-1),pagesize;

百万级级分页查询
1.分表
比如30w数据:以通常的查询方法进行全表扫描会导致很大的性能问题,此时需做分表设计,指定查询范围再有针对性的查询。
表A(id,,tt,mes,vv),其中id自增,tt为title,mes为存储信息,vv为索引
索引表:B(id,tt,vv)
步骤:对B进行分页查询,出结果后再根据vv对A表进行查询
分表的目的:虽然都是全表扫描,可是分表的最终目的是减小数据的查询量,因为mes的数据量很大,所以通过索引表B避过它,确定范围后再对A进行查询。

2复合索引(可突破百万)
另一篇引用:





你可能感兴趣的:(数据库分页)