redis通过rownum分批从orace数据库读取数据——内存数据库存在重复数据得问题解决

redis通过rownum分批从orace数据库读取数据——内存数据库存在重复数据得问题解决

rownum可参考:https://blog.csdn.net/YellowStar5/article/details/86506142
关于redis 刷参sql问题:

1、没加排序(会导致部分数据重复,部分数据丢失,但数据总量一致)

  select skey, svalue  from 
  (select sp_code || oper_code skey,      
           start_date || '$$' || end_date || '$$' || sett_ratio svalue,  rownum rum  from TABLE1
            where rownum <= iEnd) 
            where rum >= iStart             

2、加排序(不会出现此问题)

select skey, svalue  from
 (select skey, svalue, rum  from
     (select skey, svalue, rownum rum from (select sp_code || oper_code skey,  start_date || '$$' || end_date || '$$' ||    sett_ratio svalue   from TABLE1  order by skey))       
  where rum <= iEnd) 
  where rum >= iStart

测试:

SELECT /*+parallel(10)*/* FROM (select sp_code || oper_code skey,               start_date || '$$' || end_date || '$$' || sett_ratio svalue,               rownum rum          from TABLE1)          WHERE skey='1000082272292600' ;  **-- rum 1256762**

SELECT /*+parallel(10)*/* FROM (select sp_code || oper_code skey,               start_date || '$$' || end_date || '$$' || sett_ratio svalue,               rownum rum          from TABLE1)          WHERE skey='1000082272292600'  **-- rum 1255836**

结论

------select * from TABLE1 不加order by 每次查出来的结果顺序不一样 而导致查询结果的 rownum 不定,导致部分数据重复,部分数据丢失,但数据总量一致因此先需先order by 再用 rownum卡范围

©️2020 CSDN 皮肤主题: 深蓝海洋 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值