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~

oracle 的分页、截断查询的更多相关文章

  1. 对于Oracle中分页排序查询语句执行效率的比较分析

    转自:http://bbs.csdn.net/topics/370033478 对于Oracle中分页排序查询语句执行效率的比较分析 作者:lzgame 在工作中我们经常遇到需要在Oracle中进行分 ...

  2. MySql、SqlServer、Oracle 三种数据库查询分页方式

    SQL Server关于分页 SQL 的资料许多,有的使用存储过程,有的使用游标.本人不喜欢使用游标,我觉得它耗资.效率低:使用存储过程是个不错的选择,因为存储过程是颠末预编译的,执行效率高,也更灵活 ...

  3. Oracle中分页查询语句

    Oracle分页查询语句使我们最常用的语句之一,下面就为您介绍的Oracle分页查询语句的用法,如果您对此方面感兴趣的话,不妨一看. Oracle分页查询语句基本上可以按照本文给出的格式来进行套用.O ...

  4. Oracle的分页查询语句优化

    Oracle的分页查询语句基本上可以按照本文给出的格式来进行套用. (一)   分页查询格式: SELECT * FROM  ( SELECT A.*, ROWNUM RN  FROM (SELECT ...

  5. Mybatis oracle多表联合查询分页数据重复的问题

    Mybatis oracle多表联合查询分页数据重复的问题 多表联合查询分页获取数据时出现一个诡异的现象:数据总条数正确,但有些记录多了,有些记录却又少了甚至没了.针对这个问题找了好久,最后发现是由于 ...

  6. oracle高效分页查询总结

    本文参考链接:http://blog.sina.com.cn/s/blog_8604ca230100vro9.html 探索查询语句: --分页参数:size = 20 page = 2 --没有or ...

  7. Oracle高效分页查询(转)

    page --没有order by的查询 -- 嵌套子查询,两次筛选(推荐使用) --SELECT * -- FROM (SELECT ROWNUM AS rowno, t.* -- FROM DON ...

  8. Oracle 的分页查询 SQL 语句

    Oracle的分页查询语句基本上可以按照本文给出的格式来进行套用. 分页查询格式: SELECT * FROM (SELECT A.*, ROWNUM RN FROM (SELECT * FROM T ...

  9. Oracle 数据库分页查询的三种方法

    一.Oracle 数据库分页查询的三种方法 1.简介 不能对 rownum 使用 >(大于或等于 1 的数值).>=(大于 1 的数值).=(不等于 1 的数值),否则无结果.所以直接用 ...

随机推荐

  1. 算法习题---4-8特别困的学生(UVa12108)

    一:题目 课堂上有n个学生(n<=),每个学生上课都会出现一个“清醒-睡眠”周期,其中第i个学生学习Ai分钟后睡眠Bi分钟,依次重复.其中在从清醒到睡眠时有一个条件:只有到全班睡眠人数大于清醒人 ...

  2. FreeMarker的应用场景

      FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页.电子邮件.配置文件.源代码等)的通用工具. 它不是面向最终用户的,而是一个Java类库,是一 ...

  3. Python - Django - FBV 和 CBV

    FBV: Function Base View,基于函数的视图 views.py: from django.shortcuts import render, HttpResponse # FBV de ...

  4. delphi self.Update 什么作用

    更新指定窗口的客户区.如果窗口更新的区域不为空,UpdateWindow函数就发送一个WM_PAINT消息来更新指定窗口的客户区.函数绕过应用程序的消息队列,直接发送WM_PAINT消息给指定窗口的窗 ...

  5. 【Leetcode_easy】844. Backspace String Compare

    problem 844. Backspace String Compare solution1: class Solution { public: bool backspaceCompare(stri ...

  6. CF1228D Complete Tripartite

    思路: 任选一点a,和a没有边直接相连的点一定和a在同一个集合,由此构造得到一个集合A.用类似的方法再构造一个集合B,并将剩下的点放在集合C中,就得到了三个集合A,B,C.再检查A,B,C是否符合要求 ...

  7. 第5课.linux进阶命令

    1.find:查找符合条件的文件 格式: find 目录名 选项 查找条件 eg: find /work/001_linux_basic/dira/ -name "test1.txt&quo ...

  8. mysql 库、表、数据的增删改

    数据库定义 语法形式 (1)创建数据库 create database [if not exists ] 数据库名 [charset 字符集] [collate 字符排序规则]; if not exi ...

  9. LeetCode 459. 重复的子字符串(Repeated Substring Pattern)

    459. 重复的子字符串 459. Repeated Substring Pattern 题目描述 给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成.给定的字符串只含有小写英文字母,并且 ...

  10. java常用的工具类

    包装类 https://www.cnblogs.com/benjieqiang/p/11305777.html Arrays类(数组工具类) package day02.com.offcn.test; ...