数据库比较两行数据区别的方法

本文介绍了一种在Oracle数据库中高效比对两行数据的方法,通过自关联将两行数据并排显示,便于快速找出差异所在。此外还提供了一种通用的比较方法,即通过循环数组来比较大量数据,实测在10万行、50列的数据集上表现良好。

比较两行数据是否有变化 那几个字段有变化

方法检索a行数据 并且通过自关联将b行数据的列检索在a的右侧如a.a,a.b,a.c, b.a,b.b, b.c

这样子相互比较是只需要将 列1 + 全量 = b的列1好处是一次检索就可以完成比较,不需要先检索 a行 然后再检索b行 在10w行数据的比较中速度可以提升很多(行数少的情况下随意)

通用的比较方法是 先将USER_TAB_COLUMNS的列保存在一个数组中,
然后更具数组循环得出 检索的sql。通过DBMS_SQL的方式打开游标,并且循环得出结果。

比较的时候只需要写 一个循环 数组

DBMS_SQL.COLUMN_VALUE(V_CUSOR, I, V_FROM_VAL);

DBMS_SQL.COLUMN_VALUE(V_CUSOR, I + ARR.COUNT, V_TO_VAL);

这两个取出来的值就是比较两行数据的比较列。

实测在10w行数据的情况下,50列数据的比较并且登录比较列的时间在2分钟左右,测试系统为i3 windows 4gmem oracle11g

转载于:https://www.cnblogs.com/spchenjie/p/6025301.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值