由於專案要從 uat環境遷移到 prod 環境,infosys(阿三) team 的人要我執行下面的sql,具體的業務邏輯我就不多說了。
begin
update adwgu_dicfr.dicfr_ordr_cut_fct a
settp_end_date =
( select to_number(to_char((tp_end_date),'yyyymmdd')) from cal_mastr_dim b
where a.time_perd_start_date= to_number(to_char((b.day_date),'yyyymmdd')));
update adwgu_dicfr.dicfr_ordr_cut_fct a
setwk_end_date =
( select to_number(to_char((wk_end_date),'yyyymmdd') from cal_mastr_dim b where
a.time_perd_start_date= to_number(to_char((b.day_date),'yyyymmdd')));
update adwgu_dicfr.dicfr_ordr_cut_fct a
setmth_start_date =
( select to_number(to_char((mth_start_date),'yyyymmdd') from cal_mastr_dim b where
a.time_perd_start_date= to_number(to_char((b.day_date),'yyyymmdd')));
update adwgu_dicfr.dicfr_ordr_cut_fct a
setmth_end_date =
( select to_number(to_char((mth_end_date),'yyyymmdd') from cal_mastr_dim b where
a.time_perd_start_date= to_number(to_char((b.day_date),'yyyymmdd')));
commit;
end;
/sql> select count(*) from adwgu_dicfr.dicfr_ordr_cut_fct ; ---這個表有5百多萬記錄
count(*)
----------
5615733
相信你看了這個過程肯定要發狂了,這簡直就是極品開發人員寫的啊,印度阿三,哎,水平確實不咋地,媽的專案上面的效能問題絕大部分就是這些sb開發人員亂寫sql,寫好了也不給我檢查。哥就不明白為啥不能在乙個 sql裡面搞定所有的update,而非要
單獨的update。我前面一篇部落格才寫了 乙個update的優化案例, 那麼這裡也適用,下面就是我改寫的sql
declare
cursor c is
select
to_number(to_char((b.tp_end_date),'yyyymmdd')) tp_end_date,
to_number(to_char((b.wk_end_date),'yyyymmdd')) wk_end_date,
to_number(to_char((b.mth_start_date),'yyyymmdd')) mth_start_date,
to_number(to_char((b.mth_end_date),'yyyymmdd')) mth_end_date,
a.rowid row_id
from adwgu_dicfr.dicfr_ordr_cut_fct a, adwgu_dicfr.cal_mastr_dim b
where a.time_perd_start_date= to_number(to_char((b.day_date),'yyyymmdd')) ;
v_counter number;
begin
v_counter := 0;
for v_row in c loop
update adwgu_dicfr.dicfr_ordr_cut_fct
set tp_end_date = v_row.tp_end_date,
wk_end_date = v_row.wk_end_date,
mth_start_date = v_row.mth_start_date,
mth_end_date = v_row.mth_end_date
where rowid = v_row.row_id;
v_counter := v_counter + 1;
if (v_counter >= 1000) then
commit;
v_counter := 0;
end if;
end loop;
commit;
end;
/改寫後的sql 28分鐘就完成了
pl/sql procedure successfully completed.
elapsed: 00:27:59.81
IT開發人員
其路五 轉行到市場 絞盡腦汁的想想,我所知道的人之中只有兩個開發人員去了市場,這兩個人都不能說是朋友,認識而已。他們都是主動要求去了市場,結果是這兩個人均在市場都是乾到一年左右,然後都自已開公司了。呵呵,很奇怪,極高的轉行成功率!不過仔細想想,我對這兩個人的思路佩服的五體投地。能下決心仍掉每月5 6...
開發人員必讀
對於剛開始學習軟體開發的新人來說,必備技能 往往意味著乙個長長的 標有重要度的學習列表,但是過長的列表通常會導致新人不知如何開始學習,壓力倍增。本文嘗試列舉出最重要的幾個技能,也期望通過此列表能給新人乙個比較明確的學習重點和路徑。沒有掌握任何一門程式語言,就不可能成為一名程式設計人員。許多程式設計師...
libjingle開發人員指南
libjingle 開發人員指南 libjingle sdk包含c 源 和文件,使您能夠設計連線和網路交換資料的應用程式 通過點對點資料連線 該sdk包含 和示例應用程式,乙個window平台的vs2005 的解決方案,其他平台的configuration and makefiles檔案用來編輯程式...