• oracle 的分页、截断查询


    oracle 分页、截断查询

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

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

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

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

      由于没有自增ID,数据的生成时间 和 更新时间,没有任何字段能够作为依次的查询依据,所以用到分页、截断

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

      单核 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 > {}"""
    

    上面是模板,{} 中需要做字符串格式化:

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

    截断查询SQL:

    "select * from (select XH, XM, GMSFHM, HJXZ, RYLX, DJDW_GAJGMC, ZP, JZ_LXDH, JJ_LXDH from DCRY.SWRYXX) WHERE ROWNUM <= 10;"
    

    end~

    每天都要遇到更好的自己.
  • 相关阅读:
    ASP.NET 构建高性能网站 架构设计
    ASP.NET 构建高性能网站 架构设计
    Vim和Vi的常用命令
    Vim和Vi的常用命令
    Vim和Vi的常用命令
    【收藏】前端知识体系完整版本
    【收藏】前端知识体系完整版本
    Ubuntu-升级linux软件源,安装vim/五笔
    高阶函数---swift中的泛型介绍(一步步实现Map函数)
    Go基础学习(二)
  • 原文地址:https://www.cnblogs.com/kaichenkai/p/10792797.html
Copyright © 2020-2023  润新知