標籤:
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中的資料比對