首页 > 数据库技术 > 详细

oracle中的数据比对

时间:2016-05-15 13:50:04      阅读:169      评论:0      收藏:0      [点我收藏+]

1、要有唯一索引或者主键作为前提,减少数据冲突的数量,如示例标红的地方:

技术分享
 
2、当有in查询的时候,尽量用exists,这样能提高查询效率:
create table TF_F_USER_DIFF1 tablespace BD_TBS_EXP_DATA parallel 20  as  select /*+ parallel(c,20) */ * from TF_F_USER_DIFF c where  not exists(select /*+ parallel(a,10) */ user_id from TF_F_USER_CRM a where a.user_id=c.user_id);
低效率查询是这样的
create table TF_F_USER_DIFF1 tablespace BD_TBS_EXP_DATA parallel 20  as  select /*+ parallel(c,20) */ * from TF_F_USER_DIFF c where  a.user_id not in(select /*+ parallel(a,10) */ user_id from TF_F_USER_CRM a);
 
3、如果两张表的数据量差异太大的话,建议按每个列分别比对,而不是把所有的列放在一起直接minus,因为minus之后的结果需要关联查询,两张大表关联查询效率不高。
  1)分别比对:select columnA,columnB from tableA minus select columnC,columnD from tableB,其中columnA,columnC分别是两张表的主键,这样就只比对columnB,columnD这两列了。
  2)把所有的列放在一起比对:select columnA,columnB,columnE,columnF,columnG,coulumnH from tableA minus select columnC,columnD,columnL,columnM,columnN,coulumnI from tableB

oracle中的数据比对

原文:http://www.cnblogs.com/nizuimeiabc1/p/5495060.html

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