数据库分页

来源:互联网 发布:阿里云医疗 编辑:程序博客网 时间:2024/06/11 20:06

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
          ORDERBY id(索引), flight_no) ta
     WHEREROWNUM <= 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复合索引(可突破百万)
另一篇引用:




0 0
原创粉丝点击