系統在執行過程中,由於功能的更新會產生一些指令碼去更新現有的資料資訊。
如:update tony_t_sscj_bak a set a.cj = (select b.cj from tony_t_sscj b where a.guid = b.guid and a.km = b.km); 這樣一條sql。基表的資料只有6000條,執行這個語句需要3s多的時間。
當我們使用mergin into的時耗時僅為0.047s。
--要更新的表
merge into tony_t_sscj_bak a
--比較的表
using tony_t_sscj b
--條件
on (a.guid = b.guid and a.km = b.km)
--條件匹配時執行update 不匹配時執行insert
when matched then
update set a.cj = b.cj
when not matched then
insert (guid,xh,xm,xb,xw,km,cj) values (b.guid,b.xh,b.xm,b.xb,b.xw,b.km,b.cj);
使用一條INSERT語句完成多表插入
這是一條顛覆常規的插入方法,一條insert語句可以完成向多張表的插入任務。小小地展示一下這種插入方法。1.建立表t並初始化測試資料,此表作為資料來源。sec ora10g create table t x number 10 y varchar2 10 sec ora10g insert into...
SQL 使用一條INSERT語句完成多表插入
這是一條顛覆常規的插入方法,一條insert語句可以完成向多張表的插入任務。小小地展示一下這種插入方法。1.建立表t並初始化測試資料,此表作為資料來源。sec ora10g create table t x number 10 y varchar2 10 sec ora10g insert into...
一條SQL語句研究
現有 select from t where a in 5,3,2,1,8,9,30.假設 a 是主鍵,in裡面的引數是唯一的。現要求輸出的結果集按照 in 提供的引數順序排序。而不是按照a本身的排序規則排序?另 如果不要求使用臨時表或表變數,那麼又有什麼辦法實現。臨時表方案參卡 create ta...