首页 > 数据库技术 > 详细

oracle 的分页查询

时间:2019-04-29 21:09:27      阅读:190      评论:0      收藏:0      [点我收藏+]

oracle 分页查询

需求:从黄石车管所的备案库中(oracle)取出数据,放到车综大数据平台(http方式)

 

现场情况:oracle中有三张表,CZRKXX(常住人口信息),ZDRYXX(重点人员信息),ZPXX(照片信息)

  这三张表,字段超级多,没有主键,只选取了需要展示的字段,以 CZRKXX 表做左连接查询,大约是 500W 条数据,每次取500条

 

实现方式:多进程,多线程,增量获取

  由于没有索引,表的创建时间,更新时间字段不能作为依据,所以用到分页

  增量的实现:每次读取后,将索引变量增加一定区间大小,然后存储到文件中(数据库也行),为的是在程序挂掉时,再次开启可以继续从中断的地方开始读取

  单核 CPU 保持在 20 线程左右

 

连接查询SQL:{} 中填充数据的索引值

  例如:ROWNUM <= 500, ... UA.RN > 0, 取到的是索引为 1 ~ 500 的记录,RN 是记录的索引值

query_sql = """SELECT * FROM 
                (SELECT ROWNUM RN, Z.ZDRKBH, Z.ZDRYLBDM, Z.XM, Z.XMHYPY, Z.CSRQ, Z.HJDZ_JYQK, 
                Z.HJDZ_XZQHDM, Z.XZZ_XZQHDM, Z.XZZ_DZMC, Z.SC_XXRKSJ, Z.DXBH, Z.LADWJGDM, Z.ZJLASJ, Z.ZDRYLBXL, 
                Z.ZDRYYXXDM, Z.JLXZSJ, Z.JLBGSJ, Z.CJSJ, Z.SJCQSJ, Z.DM_ID, Z.SJRKSJ, Z.SJGXSJ, 
                C.GMSFHM, C.RYBH, C.XBDM, C.SG, C.XXDM, C.MZDM, C.ZJXYDM, C.HYZKDM, C.BYZKDM, C.ZYLBDM, C.ZY, C.JG_GJHDQDM, C.JG_XZQHDM, 
                C.CSD_GJHDQDM, C.CSD_XZQHDM, C.CSD_DZMC, C.HJDZ_DZMC, C.FWCS, C.SFZX_PDBZ, 
                P.ZP
                FROM (CZRKXX C LEFT JOIN ZDRYXX Z ON C.GMSFHM=Z.GMSFHM) LEFT JOIN ZPXX P ON Z.GMSFHM=P.GMSFHM
                WHERE ROWNUM <= {}) UA 
            WHERE UA.RN > {}
           """

 

单表查询SQL:

  两条 sql 分页的逻辑是一样的

"""select * from (select P.GMSFHM, P.ZP, ROWNUM RN from hsjj.ZPXX P where ROWNUM <= {}) UA where UA.RN > {}"""

 

oracle 的分页查询

原文:https://www.cnblogs.com/kaichenkai/p/10792797.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!